SQLite SELECT不再适用于Android API 21,但在18中完成

时间:2014-11-24 13:42:36

标签: java android sqlite android-5.0-lollipop

我编写了一个访问外部存储上的SQLite数据库的应用程序。该应用程序在我的Nexus 4和模拟器上运行得很好。自从我将手机升级到Android 5后,它不再显示来自SQLite数据库的任何数据。 API 21上的模拟器也不显示数据。

没有抛出任何错误或异常。 API 21上的数据库游标只是空的。

数据库打开如下:

String path = myContext.getExternalFilesDir(null).getAbsolutePath() + File.separator + DB_NAME;
myDataBase = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READWRITE);

查询执行方式如下:

Cursor cur = myDataBase.rawQuery("SELECT * FROM employee WHERE employee match ? " +
    "ORDER BY firstname, lastname LIMIT 100",
    new String[] { "*" + queryString+ "*" });

while (cur.moveToNext()) {
    persons.add(getPerson(cur)); // never reaches this since API 21
}
cur.close();

从18岁变为21岁?

完整的源代码可以在这里找到:https://github.com/sebastianhaeni/Contacts

1 个答案:

答案 0 :(得分:1)

Android 5中的SQLite MATCH与Android中的方式不同< = 4.4

前缀' *'在5.0之前被忽略了。从5.0开始,它会搜索以' *'开头的字符串。通配符只能用作后缀。