Подтвердить что ты не робот

Sqlite LIKE проблема в android

Привет, я потратил почти 2 часа, пытаясь понять, почему оператор LIKE не работает, и я получаю только эту ошибку: 03-03 11:31:01.770: ERROR/AndroidRuntime(11767): Caused by: android.database.sqlite.SQLiteException: bind or column index out of range: handle 0x89d9f8

В SQLiteManager он работает совершенно так: SELECT Word FROM Sign WHERE Word LIKE 'he%'; Но когда я пытаюсь сделать это из java, это не сработает. Вот мой запрос, я пробовал во многих отношениях без везения:

Cursor cursor = m_db.query(MY_TABLE, new String[] {"rowid","Word"},"Word"+" LIKE '"+" ?"+"%'", new String[]{name}, null, null, null);

Любые идеи? я делаю это неправильно или есть ошибка?

Спасибо за ваше время.

4b9b3361

Ответ 1

Я думаю, что вы не должны использовать selArgs для LIKE таким образом. Вы можете попробовать следующее:

Cursor cursor = m_db.query(MY_TABLE, new String[] {"rowid","Word"},"Word"+" LIKE '"+name+"%'", null, null, null, null);

EDIT:

ОК, если вы хотите быть в безопасности от SQL-инъекций, не используйте вышеуказанное решение, используйте это:

Cursor cursor = m_db.query(MY_TABLE, new String[] {"rowid","Word"},"Word LIKE '?'", new String[]{name+"%"}, null, null, null);

Ответ 2

Решение на самом деле очень просто. Просто включите% внутри вашего selectionArgs.

String []selectionArgs = {name + "%"});

Ответ 3

Вот как я это сделал:

String []columns = {"_id", "name"};
String []selectionArgs = {name+"%"};
db.query(true,"mydb",columns,"name LIKE ?",selectionArgs,null,null,null);