2010-07-17 31 views
11

我想将结果限制为那些KEY_HOMEID等于journalId的结果。 我已经在这几天任何帮助,将不胜感激。如何将WHERE子句添加到Android上的查询

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

回答

24

看一看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); 
+0

谢谢。作品。我没有意识到,只能在rawQUery中使用SQL统计信息。 – Brian 2010-07-17 15:18:28

+0

另请参阅我的回答在你早些时候(几乎相同)的问题:) http://stackoverflow.com/questions/3269863/sqlite-and-android-how-do-i-use-string-having-in-my - 查询/ 3271769#3271769 – 2010-07-17 17:43:01

+1

请尽可能避免'rawQuery' – user2070775 2014-06-21 15:02:05

2

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

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

下面是最终为我工作的代码:

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

它使你的代码更清楚,如果你用它其中的参数(在查询参数) 例子:

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

我不能使用'userId.toString()'而不是使用'Integer.toString(userId)'' – 2015-05-04 23:57:15