SQLite и Android. Как я могу использовать String Имея в моем запросе? - PullRequest
2 голосов
/ 17 июля 2010

У меня есть запрос, который вытягивает все из базы данных в представление списка.

return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_HEIGHT, KEY_BODY, KEY_HOMEID},null , null, null, null, null,null);

                                |               String Having is the 3rd from
                                                           last null.

Я хочу только записи, где поле KEY_HOMEID соответствует переменной с именем journalIdэто должна быть числовая строка.

Я также хотел бы знать, как перенести переменную в мой DatabaseAdapter ... будет ли ((resource) this.getApplication()).getjournalId()) работать ??Ресурс - это класс, расширяющий приложение.

Ответы [ 2 ]

3 голосов
/ 17 июля 2010

Во-первых, было бы полезно публиковать сообщения об ошибках, а не «без кубиков».

Во-вторых, пожалуйста, прочитайте документацию по SQLiteDatabase.query().Ключевые слова SQL, такие как "FROM" и "HAVING", не должны являться частью вызова метода.

Вы уже передали имя таблицы в качестве первого параметра query(), поэтому пишете "FROM DATABASE_NAME WHERE ..."является избыточным и приведет к неправильному формированию запроса.

В-третьих, вы не можете передавать имена переменных Java как часть selection параметра String - вам нужно иметь строку типа: KEY_HOMEID +"="+ journalId.

В-четвертых, обычно лучше использовать selectionArgs, а не встраивать параметры запроса в selection.Особенно, если у вас есть строки или параметры, поступающие из пользовательского ввода.
Например, selection = KEY_HOMEID +"=?" и selectionArgs = new String[] { journalId }

В целом, вызов вашего метода должен выглядеть следующим образом:

mDb.query(DATABASE_TABLE, 
          new String[] { KEY_ROWID, KEY_HEIGHT, 
                         KEY_BODY, KEY_HOMEID },
          KEY_HOMEID +"=?", new String[] { journalId },
          null, null, null);
2 голосов
/ 17 июля 2010

Используйте предложение WHERE; HAVING используется только с GROUP BY.

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