Синтаксическая ошибка SQLite около %

я получаю эту ошибку

android.database.sqlite.SQLiteException: near "%": syntax error: , while compiling: SELECT _id, word, meaning FROM todo WHERE KEY_WORD = +%D9%84

для этого

database.query(DATABASE_TABLE, new String[] {
            KEY_ROWID, KEY_WORD, KEY_MEANING }, "KEY_WORD = " +word, null, null,
            null, null,null);

когда слово +%D9%84


person Hamhame    schedule 30.01.2012    source источник


Ответы (2)


Вы должны избежать SQL-запроса. Для этого используйте поле selectionArgs (сразу после "KEY_WORD = " +word в вашем коде). Он заменит любой ? в поле выбора своими элементами:

database.query(DATABASE_TABLE, new String[] {
  KEY_ROWID, KEY_WORD, KEY_MEANING }, KEY_WORD + " = ?", new String[] { word },
  null, null, null, null);

Дополнительные сведения см. в разделе этот< /а>.

person Frxstrem    schedule 30.01.2012
comment
Я уверен, что есть запись, но android.database.sqlite.SQLiteException: нет такого столбца: KEY_WORD: при компиляции: SELECT _id, слово, что означает FROM todo WHERE KEY_WORD =? - person Hamhame; 31.01.2012
comment
@Hamhame, вероятно, это связано с тем, что KEY_WORD следует ставить вне кавычек (если это константа, содержащая имя столбца) - см. мой обновленный ответ. - person Frxstrem; 31.01.2012

Вы должны заключить слово в " символов. Если вы хотите использовать подстановочные знаки, вы должны использовать оператор сравнения like вместо =.

person frm    schedule 30.01.2012