2012-02-25 60 views
5
public Cursor fetchTimetable() { 
    return mDb.query(DATABASE_TABLE_TIMETABLE, new String[] {TIMETABLE_ROWID, TIMETABLE_MODULECODE, TIMETABLE_MODULENAME, TIMETABLE_ROOM, TIMETABLE_LECTURER, TIMETABLE_TIME}, null, null, null, null, null); 
} 

例如,如果我想TIMETABLE_MODULECODE = 123.我將如何做到這一點,我已經讀了它的第一個空。我曾嘗試以下,但仍不起作用SQLiteDatabase - 如何使用where子句?

public Cursor fetchTimetable() { 
    String a = "TIMETABLE_CODE = ADD"; 
    return mDb.query(DATABASE_TABLE_TIMETABLE, new String[] {TIMETABLE_ROWID, TIMETABLE_MODULECODE, TIMETABLE_MODULENAME, TIMETABLE_ROOM, TIMETABLE_LECTURER, TIMETABLE_TIME}, a, null, null, null, null); 
} 

回答

5
db.query 
     (
       TABLE_NAME, 
       new String[] { TABLE_ROW_ID, TABLE_ROW_ONE, TABLE_ROW_TWO }, 
       TABLE_ROW_ID + "=" + rowID, 
       null, null, null, null, null 
     ); 

TABLE_ROW_ID + 「=」 + ROWID,這裏 「=」 是where子句

+1

然而,這工作我使用字母時會出現錯誤信息。但是,如果使用數字它工作 – Waz 2012-02-25 14:56:31

+3

,如果你想使用一個字符串就可以觸發查詢作爲光標mCursor = mDb.query(真,CUSTOMER_TABLE_NAME,新的String [] {GENERIC_ID_KEY,ADDRESS_KEY,PHONE_KEY,MAIL_KEY,CUSTOMER_NAME_KEY},GENERIC_ID_KEY + 「=?」,新的String [] {customerDbId},NULL,NULL,NULL,NULL); – 2012-02-26 10:47:34

4

究竟做「仍然無法正常工作「 意思?

下面的代碼應該只是罰款:

public Cursor fetchTimetable() { 
    String[] columnNames = new String[] {TIMETABLE_ROWID, TIMETABLE_MODULECODE, TIMETABLE_MODULENAME, TIMETABLE_ROOM, TIMETABLE_LECTURER, TIMETABLE_TIME}; 
    String whereClause = "TIMETABLE_MODULECODE=123"; 

    return mDb.query(DATABASE_TABLE_TIMETABLE, columnNames, whereClause, null, null, null, null); 
} 
2

最簡單的方法:

return mDb.rawQuery("SELECT * FROM myTable WHERE column1 = "+ someValue, null); 
4

正確的語法是

String[] projection= {column names}; 
String[] where={"values for where clause"}; //this must be array  
public Cursor fetchTimetable() { 

    return mDb.query(TABLE_NAME, projrction, "columname"+"=?", where, null, null, null); 
} 
+0

謝謝拉利特,你的代碼適合我。 我不知道爲什麼你沒有得到給予好評。請附上一些鏈接 – 2017-03-06 12:12:50

9

我的工作與在ARGS(它更多例子清除使用它):

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

您可以使用使用此查詢:

SQLiteDatabase db = this.getReadableDatabase(); 

//Cursor cursorr = db.rawQuery(Query, null); 

Cursor cursorr = db.rawQuery("select * from " + DATABASE_TABLE_EHS + " where " + TASK_ID + "='" + taskid + "'" , null); 

    if (cursorr.moveToFirst()) 
    { 

     do { 

      // your code like get columns 

      } 
     while (cursorr.moveToNext()); 
    } 
} 
0

如果你正在檢查對一個字符串值,你要包裹在字符串中引號象下面這樣:

dbHelper.COL_EMAIL +"='"+givenEmail+"'",