SQLite的where子句问题
我身边有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;
}
但还是让所有的记录,而我只是想获得属于来源'在线'的记录
试试这种方式:
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);
光标findEntry = db.query( “sku_table”,列 “所有者=?”,新的String [] {所有者},NULL,NULL,NULL);
光标findEntry = db.query(“TABLE_REMINDERS”,列,“Online =?”,new String [] {Online},null,null,null); – Dilip
和... **为什么**? 'rawQueries'和'query()'一样好 –
你可能想试试这个。它是从我自己的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();完成使用后。
你检查了你的数据库记录吗?我怀疑所有记录都有在线作为源 –
发布您的表结构。 –
是否有重复的条目? – Piyush