Android: выберите запрос в базе данных Android

#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'