如何将 WHERE 子句添加到 android 上的查询

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/3271740/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-20 09:24:11  来源:igfitidea点击:

how to add WHERE clause to Query on android

androidsqlitewhere-clause

提问by Brian

I would like to limit the results to those whose KEY_HOMEID is equal to journalId. I've been on this for a couple days any help would be appreciated.

我想将结果限制为那些 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); }

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); }

回答by m6tt

Have a look at http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query

看看http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query

Your query should look a little like this:

您的查询应如下所示:

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

If you feel more comfortable writing sql queries you can also use:

如果您觉得编写 sql 查询更舒服,您还可以使用:

mDb.rawQuery("SQL STATEMENT", null);

回答by Krystian

It makes your code more clear if you'll use it where arguments (in query parameters) Example:

如果您将在 where 参数(在查询参数中)使用它,它会使您的代码更加清晰 示例:

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

回答by Robi Wan Kenobi

I was looking for an answer to my problem here as well.

我也在这里寻找我的问题的答案。

It turned out that I tried to have a String instead of an Integer. My solution was to do it like that: 'String' instead of Integer.

原来我试图用一个字符串而不是一个整数。我的解决方案是这样做:'String' 而不是 Integer。

Here is the code that worked for me in the end:

这是最终对我有用的代码:

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