#android #sqlite
#Android #sqlite
Вопрос:
Мне нужно получить значения дочернего столбца, соответствующего ключевому столбцу, как на изображении. Каким будет оператор select для него в Android sqlite.
Спасибо
Для этого я использую следующий код:
public Cursor fetchChildren(String KEY_){
Cursor c = db.rawQuery("SELECT children FROM " DATABASE_TABLE_NAVIGATION
" WHERE key =" KEY_ "", null);
return c;
Но это дает мне исключение:
android.database.sqlite.SQLiteException: no such column: home: , while compiling: SELECT children FROM navigation WHERE key =home
}
Комментарии:
1. Я не знаю, так ли это просто или просто что-то еще, тогда я понимаю ваш вопрос как. Разве вы не можете использовать простой метод запроса SQLiteDatabase для извлечения значения этого столбца?
2. Да, я уже использую это, но выдаю мне следующее исключение: android.database.sqlite. Исключение SQLiteException: нет такого столбца: home: , при компиляции: ВЫБЕРИТЕ дочерние элементы ИЗ навигации, ГДЕ key = home
3. попробуйте использовать key =’home’ или ключ типа ‘home’
Ответ №1:
Как говорит Андрей, вокруг ключа нужны кавычки.
Но все же лучше передавать ключ отдельно в качестве аргумента запроса, а не напрямую включать его в запрос. Это позволяет SQLite повторно использовать один и тот же кэшированный запрос для каждого другого ключа, который вы могли бы передать, что делает его намного более эффективным.
public Cursor fetchChildren(String KEY_){
Cursor c = db.rawQuery("SELECT children FROM " DATABASE_TABLE_NAVIGATION
" WHERE key = ?", new String[] {KEY_});
return c;
}
Ответ №2:
Я подозреваю, что вы просто пропустили кавычки
SELECT children FROM navigation WHERE key='home'