Android SQLite странная проблема - PullRequest
0 голосов
/ 21 апреля 2011

В моем приложении у меня есть одна таблица БД с такой структурой: пользователь TEXT |текст токена

Когда я делаю запрос, чтобы проверить, существует ли этот пользователь в таблице, например:

String whereClause = COLUMN_USER + "==\"" + userName + "\"";
Cursor c = db.query(TABLE_USERS, new String[]{COLUMN_USER, COLUMN_TOKEN}, whereClause, null, null, null, null);

Это работает для всех пользователей.Но если переменная userName является "user", я получаю все записи обратно.Похоже, sqllite проверяет структуру таблицы и возвращает мне все записи, потому что имя этого столбца равно моему значению, которое я использую - user.

Ответы [ 2 ]

1 голос
/ 21 апреля 2011

Я предлагаю вам параметризировать аргументы в предложении where:

String whereClause = COLUMN_USER + "=?";
String [] whereArgs = { userName };
Cursor c = db.query(TABLE_USERS, new String[]{COLUMN_USER, COLUMN_TOKEN}, whereClause, whereArgs, null, null, null);
0 голосов
/ 21 апреля 2011

Простой способ избавиться от этой проблемы - просто заключить запрос в:

if (userName =! "user") {
//code here
} else {
//open dialog about invalid username
}

Хотя я уверен, что есть более элегантное решение.В любом случае следует выполнить очистку входных данных, и, если вы уже проверяете наличие инвалидов, возможно, просто добавьте «пользователя» в список отклоненных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...