2012-02-25 30 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+"'",