Синтактична грешка на 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