ошибка в SQL-запросе выбора - PullRequest
0 голосов
/ 03 апреля 2012
SELECT DISTINCT _id, Game_name, Book, Chapter, Verse_start, Verse_stop, Scripture 
FROM Bible_Game WHERE God's Kingdom

У меня есть код выше в выражении выбора sqlite, и это дает мне следующую ошибку.

android.database.sqlite.SQLiteException: unrecognized token: "'s Kingdom": , while compiling: SELECT DISTINCT _id, Game_name, Book, Chapter, Verse_start, Verse_stop, Scripture FROM Bible_Game WHERE God's Kingdom

как я могу решить эту проблему (как я могу использовать escape-символ в sqlite?)

Ответы [ 2 ]

4 голосов
/ 03 апреля 2012

У вас есть две проблемы.

Во-первых, ваше условие фильтрации (после ГДЕ) неверно.Он должен сравнивать столбец со значением.Я предполагаю, что вы ищете запись с Game_name, равным фразе Царство Бога , это правильно?

Кроме того, текстовые строки должны появляться в одинарных кавычках.Любые внутренние одинарные кавычки в строке должны быть экранированы путем удвоения символа кавычки.

Если мое предположение о вашем намерении верно, правильный SQL для использования:

 SELECT DISTINCT _id, Game_name, Book, Chapter, Verse_start, Verse_stop, Scripture 
 FROM Bible_Game WHERE Game_name = 'God''s Kingdom'
2 голосов
/ 03 апреля 2012

Лучший способ избавиться от проблем с ' - это убрать их с помощью selectionArgs, предоставляемого каждым методом базы данных в Android:

Cursor result = db.rawQuery("SELECT DISTINCT _id, Game_name, Book, Chapter, " +
        "Verse_start, Verse_stop, Scripture FROM Bible_Game WHERE Game_name=?",
        new String[] { "God's Kingdom" });

Результаты в

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