【发布时间】:2016-04-26 06:09:43
【问题描述】:
我在 SQLite 表中有大约30 记录,其中10 记录属于来自在线 的来源,其余的20 记录属于来自离线 的来源。
现在,我想从Online 中获取属于source 的所有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;
}
但仍然获取所有记录,而我只想获取属于源“在线”的记录
【问题讨论】:
-
您检查过您的数据库记录吗?我怀疑所有记录都以 Online 作为来源
-
发布您的表结构。
-
是否有重复条目?
-
你能把你如何使用sQuery的代码贴出来吗?
-
@AngelKoh 我发布了代码,请立即查看
标签: android sqlite where-clause