2010-07-17 59 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