2012-02-25 36 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); 
} 

Ví dụ: nếu tôi muốn TIMETABLE_MODULECODE = 123. Làm cách nào tôi thực hiện việc này, tôi đã đọc giá trị rỗng đầu tiên. Tôi đã cố gắng này dưới đây nhưng vẫn làm việc doesntSQLiteDatabase - Cách sử dụng mệnh đề 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); 
} 

Trả lời

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, đây "=" là mệnh đề where

+1

này tuy nhiên làm việc i nhận được thông báo lỗi khi sử dụng chữ cái. Nhưng nếu tôi sử dụng số, nó hoạt động – Waz

+3

nếu bạn muốn sử dụng chuỗi, bạn có thể kích hoạt truy vấn dưới dạng Cursor mCursor = mDb.query (true, CUSTOMER_TABLE_NAME, Chuỗi mới [] {GENERIC_ID_KEY, ADDRESS_KEY, PHONE_KEY, MAIL_KEY, CUSTOMER_NAME_KEY}, GENERIC_ID_KEY + "=?", chuỗi mới [] {customerDbId}, null, null, null, null); –

4

chính xác là gì "vẫn không hoạt động " nghĩa là?

Các mã sau đây nên làm việc tốt:

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

Cách đơn giản:

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

đúng cú pháp là

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

Cảm ơn bạn Lalit, mã của bạn làm việc cho tôi. Tôi không biết tại sao bạn không nhận được upvote. vui lòng đính kèm một số liên kết –

9

dụ làm việc của tôi với nơi args (đó là hơn rõ ràng khi sử dụng nó):

 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

Bạn có thể sử dụng truy vấn này:

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

Nếu bạn đang kiểm tra đối với một giá trị chuỗi bạn sẽ muốn quấn chuỗi trong dấu ngoặc kép như dưới đây:

dbHelper.COL_EMAIL +"='"+givenEmail+"'", 
Các vấn đề liên quan