как добавить предложение WHERE в Query на Android - PullRequest
12 голосов
/ 17 июля 2010

Я хотел бы ограничить результаты теми, чей 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); }

Ответы [ 3 ]

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

Посмотрите на 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);
8 голосов
/ 06 августа 2014

Это делает ваш код более понятным, если вы будете использовать его в качестве аргументов (в параметрах запроса) Пример:

        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
        );
2 голосов
/ 18 марта 2012

Я тоже искал здесь ответ на свою проблему.

Оказалось, что я пытался получить строку вместо целого числа.Мое решение было сделать так: «String» вместо Integer.

Вот код, который работал для меня в конце:

...