Как добавить предложение WHERE в Query on android
Я хотел бы ограничить результаты теми, чей KEY_HOMEID равен journalId.
Я был на этом пару дней, любая помощь будет оценена.
public Cursor fetchAllNotes(String journalId)
{
return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_HEIGHT,
KEY_BODY, KEY_HOMEID},"FROM DATABASE_TABLE WHERE KEY_HOMEID = journalId",null, null, null, null,null);
}
Ответы
Ответ 1
Посмотрите http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query
Ваш запрос должен выглядеть примерно так:
mDb.query(DATABASE_TABLE, // Table name
columnNames, // String[] containing your column names
KEY_HOMEID+" = "+jounalId, // your where statement, you do not include the WHERE or the FROM DATABASE_TABLE parts of the query,
null,
null,
null,
null
);
Если вам удобнее писать запросы sql, вы также можете использовать:
mDb.rawQuery("SQL STATEMENT", null);
Ответ 2
Это делает ваш код более понятным, если вы будете использовать его, где аргументы (в параметрах запроса)
Пример:
String [] settingsProjection = {
DBContract.Settings._ID,
DBContract.Settings.COLUMN_NAME_USER_ID,
DBContract.Settings.COLUMN_NAME_AUTO_LOGIN
};
String whereClause = DBContract.Settings.COLUMN_NAME_USER_ID+"=?";
String [] whereArgs = {userId.toString()};
Cursor c = db.query(
DBContract.Settings.TABLE_NAME,
settingsProjection,
whereClause,
whereArgs,
null,
null,
null
);
Ответ 3
Я тоже искал ответ на мою проблему.
Оказалось, что я пытался использовать String вместо Integer. Мое решение состояло в том, чтобы сделать это так: "String" вместо Integer.
Вот код, который работал у меня в конце:
return db.query(TABLE_NAME_REMINDER, PROJECTION, REMINDER_REMINDER_TYPE+" = '"+rem_type+"'", null, null, null, null);