2016-04-26 101 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();完成使用后。