#android #sqlite
#Android #sqlite
Вопрос:
Я пытаюсь использовать rawQuery с SimpleCursorAdapter для отображения в listview, но он продолжает выдавать мне ошибку
04-29 13:36:36.453: ОШИБКА /AndroidRuntime(29539): исключение java.lang.RuntimeException: Не удается запустить activity ComponentInfo{com.QuoteMachine/com.QuoteMachine.Цитата}: android.database.sqlite.Исключение SQLiteException: привязка или индекс столбца вне диапазона: обработайте 0x2f65e0
У меня есть таблица с именем Quotes со столбцами _id, auth_name, quote, category, и мой запрос выглядит следующим образом
return qmDB.rawQuery("SELECT _id as _id, auth_name, quote, category FROM Quotes",
new String[]{"WHERE auth_name = 'Robert Anton Wilson'"});
Может ли кто-нибудь знать о предложении по устранению этой проблемы?Мой первоначальный план состоял в том, чтобы использовать базовую инструкцию запроса, но возникла проблема со столбцом _id, и было предложено использовать этот подход.
Ответ №1:
Вы неправильно используете rawQuery(). Вторая переменная предназначена для аргументов, а не для предложения WHERE. Используйте это вместо:
return qmDB.rawQuery("SELECT _id as _id, auth_name, quote, category FROM Quotes WHERE auth_name = ?",
new String[] { "Robert Anton Wilson" } );
Ответ №2:
Возможно, путаница с функцией quote()? Один из ваших столбцов называется ‘quote’.
Комментарии:
1. Я понимаю, что вы имеете в виду, но это слово не используется в контексте функции и не содержит каких-либо параметров, а также при выборе строки «», так что это не проблема. Хотя спасибо за предложение 🙂