2010-07-17 33 views
11

Tôi muốn giới hạn kết quả cho những người có KEY_HOMEID bằng journalId. Tôi đã làm việc này trong một vài ngày để được trợ giúp.cách thêm mệnh đề WHERE vào Truy vấn trên 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); }

Trả lời

24

Có một cái nhìn tại http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#query

truy vấn của bạn sẽ giống một chút như thế này:

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

Nếu bạn cảm thấy viết các truy vấn sql thoải mái hơn bạn cũng có thể sử dụng:

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

Cảm ơn. Công trinh. Tôi đã không nhận ra rằng chỉ có thể sử dụng stat SQL trong rawQUery. – Brian

+0

Xem thêm câu trả lời của tôi về câu hỏi trước của bạn (khá nhiều giống hệt) :) http://stackoverflow.com/questions/3269863/sqlite-and-android-how-do-i-use-string-having-in-my -query/3271769 # 3271769 –

+1

hãy tránh 'rawQuery' khi có thể – user2070775

2

Tôi đang tìm kiếm một câu trả lời cho vấn đề của tôi ở đây là tốt.

Hóa ra là tôi đã cố gắng để có một String thay vì một số nguyên. Giải pháp của tôi là làm như thế: 'String' thay vì Integer.

Dưới đây là đoạn code mà làm việc cho tôi cuối cùng:

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

Nó làm cho mã của bạn rõ ràng hơn nếu bạn sẽ sử dụng nó mà đối số (trong tham số truy vấn) Ví dụ:

 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

Tôi không thể sử dụng 'userId.toString()' thay vào đó tôi đã sử dụng 'Integer.toString (userId)' –

Các vấn đề liên quan