2016-04-26 79 views
-2

我身邊有30記錄到SQLite的表,其中10記錄屬於從在線源和休息20記錄屬於從離線源。現在SQLite的where子句問題

,我想一切從Online屬於records,爲我寫了這個:

String sQuery = "SELECT * FROM " + TABLE_REMINDERS + " where " + KEY_SOURCE + " = 'Online'"; 

但是,通過使用上面的查詢,我讓所有的記錄可用在數據庫中,無論從何處它離線或在線

所以我錯了,爲什麼我不能得到屬於來源'Online'的數據只有

,我從屬於source 'Online'表中使用下面的查詢delete data和它的作品對我來說:

db.execSQL("delete from "+ TABLE_REMINDERS + " where " + KEY_SOURCE + " = 'Online'"); 

代碼

public List<Reminder> getAllOnlineReminders(){ 

     // String selectQuery = "SELECT * FROM " + TABLE_REMINDERS + " where " + KEY_SOURCE + " = 'Online'"; 

     String[] args = new String[]{"Online"}; 

     List<Reminder> reminderList = new ArrayList<>(); 

     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_REMINDERS + " WHERE " + KEY_SOURCE + "=?", args); 

     // Cursor cursor = db.rawQuery(selectQuery, null); 

     // Looping through all rows and adding to list 
     if(cursor.moveToFirst()){ 
      do{ 
       Reminder reminder = new Reminder(); 
       reminder.setID(Integer.parseInt(cursor.getString(0))); 
       reminder.setTitle(cursor.getString(1)); 
       reminder.setmSource(cursor.getString(2)); 

       // Adding Reminders to list 
       reminderList.add(reminder); 
      } while (cursor.moveToNext()); 
     } 
     return reminderList; 
    } 

但還是讓所有的記錄,而我只是想獲得屬於來源'在線'的記錄

+4

你檢查了你的數據庫記錄嗎?我懷疑所有記錄都有在線作爲源 –

+0

發佈您的表結構。 –

+0

是否有重複的條目? – Piyush

回答

0

試試這種方式:

String[] args = new String[]{"Online"}; 
// For select 
Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_REMINDERS + " WHERE " + KEY_SOURCE + "=?", args); 

// For delete 
Cursor cursor = db.rawQuery("DELETE FROM " + TABLE_REMINDERS + " WHERE " + KEY_SOURCE + "=?", args); 
+0

檢查我更新的代碼... – Sun

+0

它的完美代碼。你還在獲取所有數據? –

+0

是....仍然獲取所有數據 – Sun

-1

光標findEntry = db.query( 「sku_table」,列 「所有者=?」,新的String [] {所有者},NULL,NULL,NULL);

+0

光標findEntry = db.query(「TABLE_REMINDERS」,列,「Online =?」,new String [] {Online},null,null,null); – Dilip

+0

和... **爲什麼**? 'rawQueries'和'query()'一樣好 –

0

你可能想試試這個。它是從我自己的sqlite代碼改編的。希望能幫助到你。

private final String[] allColumns = {"id", "title", KEY_SOURCE}; 
    //or whatever your column name is 

    String[] args = {"Online"}; 

    Cursor cursor = 
      db.query(TABLE_REMINDERS, // a. table 
        allColumns, // b. column names 
        KEY_SOURCE + "=?", // c. selection 
        args, // d. selections args 
        null, // e. group by 
        null, // f. having 
        null, // g. order by 
        null); // h. limit 

重要:不相關的問題,但千萬記得打電話cursor.close();完成使用後。