web-dev-qa-db-ja.com

クエリにWHERE句を追加する方法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); }

12
Brian

ご覧ください 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);
25
m6tt

引数(クエリパラメータ内)でコードを使用すると、コードがより明確になります。例:

        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
        );
8
Krystian

ここでも自分の問題に対する答えを探していました。

整数ではなく文字列を使用しようとしたことが判明しました。私の解決策は、次のようにすることでした:整数の代わりに「文字列」。

これが最終的に私のために働いたコードです:

return db.query(TABLE_NAME_REMINDER, PROJECTION, REMINDER_REMINDER_TYPE+" = '"+rem_type+"'", null, null, null, null);
2
Robi Wan Kenobi