Sqlite Query Issue - PullRequest
       16

Sqlite Query Issue

1 голос
/ 11 августа 2011

Хорошо, поэтому я пытаюсь сохранить данные в Sqlite. Поэтому я пытаюсь сохранить идентификатор пользователя с «линией». Тем не менее, кажется, что пункт, где меня не хватает.

    String query = "SELECT * FROM Users WHERE username='Fellixombc";
    ResultSet result = this.sqlStatement.executeQuery(query);
    int userId = 0;
    while(result.next()) {
        System.out.println("TRUE");
        userId = result.getInt("id");
        System.out.println(result.getString("username"));
    }

И правда не печать. Тем не менее, если я удалю предложение WHERE из запроса, он выведет все имена пользователей / идентификаторы в порядке и, конечно, "TRUE"

Я что-то упускаю в Sqlite и его синтаксисе?

edit: просто чтобы уточнить, есть ли пользователь в столбце Users с идентификатором 1 и именем пользователя Fellixombc редактировать: Итак, я принял предложение вашего парня и попытался подготовить заявление, вот мой код сейчас:

        PreparedStatement sqlStatement = this.sqlConnection.prepareStatement("SELECT * FROM Users WHERE username=?");
        sqlStatement.setString(1, "Fellixombc");
        ResultSet result = sqlStatement.executeQuery();
        int userId = 0;
        while(result.next()) {
            System.out.println("TRUE");
            userId = result.getInt("id");
            System.out.println(result.getString("username"));
        }
        result.close();

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

По сути, вы хотите сохранить имя пользователя, правильно?

Ваш текущий запрос будет извлекать всю информацию относительно имени пользователя.Это то, что делает запрос SELECT, он получает.

Если вам нужно создать нового пользователя, используйте:

INSERT INTO Users (username) Values ('Fellixombc');

Я должен сказать вам, что вам может потребоваться предоставить больше информации в этомзапрос, в зависимости от того, какие другие поля есть в вашей таблице пользователей.

РЕДАКТИРОВАТЬ:

В вашем операторе выбора у вас есть открытая одинарная кавычка.1015 *

"SELECT * FROM Users WHERE username='Fellixombc'"

Чтобы избежать проблем с внедрением SQL, рассмотрите функцию prepareStatement .

1 голос
/ 11 августа 2011

Попробуйте сделать обрезку в вашем поле имени пользователя.Возможно, где-то в данных есть ложное пространство, которое приводит к сбою предложения where.

"SELECT * FROM Users WHERE trim(username) ='Fellixombc'"

Также согласитесь с @MPelletier.Вы обязательно должны использовать PreparedStatements.

...