【问题标题】:how to add WHERE clause to Query on android如何将 WHERE 子句添加到 android 上的查询
【发布时间】:2011-03-17 08:24:42
【问题描述】:

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

【问题讨论】:

    标签: android sqlite where-clause


    【解决方案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);
    

    【讨论】:

    • 谢谢。作品。我没有意识到 SQL 语句只能用于 rawQUery。
    • 另请参阅我对您之前(几乎相同)问题的回答 :) stackoverflow.com/questions/3269863/…
    • 请尽可能避免使用“rawQuery”
    【解决方案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
            );
    

    【讨论】:

    • 我不能使用userId.toString(),而是使用Integer.toString(userId)
    【解决方案3】:

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

    事实证明,我尝试使用字符串而不是整数。我的解决方案是这样做:'String' 而不是 Integer。

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

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

    【讨论】:

      猜你喜欢
      • 2010-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      • 2019-11-12
      • 2016-08-31
      • 1970-01-01
      相关资源
      最近更新 更多