我尝试使用以下查询从sqliteDB中读取:
public ArrayList<ReminderNote> getAllRegexItems(String author) {
ArrayList<ReminderNote> results = new ArrayList<>();
Cursor cursor = this.getReadableDatabase().query(
REMINDER_NOTE_TABLE,
new String[]{KEY_ID, KEY_NOTE, KEY_AUTHOR}, Strings.isEmpty(author) ? null : KEY_AUTHOR + " = ?",
Strings.isEmpty(author) ? null : new String[]{"%" + author + "%"}, null, null, null);
可以像我一样使用%
吗?
如果author为null或为空,我希望获取所有结果。
不幸的是,即使我事先添加了这样的实体,我也会得到空结果。
我执行时可以看到非空结果集:
Cursor cursor = this.getReadableDatabase().query(
REMINDER_NOTE_TABLE,
new String[]{KEY_ID, KEY_NOTE, KEY_AUTHOR}, null, null, null, null, null);
答案 0 :(得分:0)
您使用的是KEY_AUTHOR + " = ?"
,您应该使用KEY_AUTHOR + " LIKE ?"
Cursor cursor = this.getReadableDatabase().query(
REMINDER_NOTE_TABLE,
new String[]{KEY_ID, KEY_NOTE, KEY_AUTHOR},
Strings.isEmpty(author) ? null : KEY_AUTHOR + " LIKE ?",
Strings.isEmpty(author) ? null : new String[]{"%" + author + "%"},
null, null, null);