即使数据存在,使用WHERE子句的Android SQLite3查询也不会返回结果

时间:2016-03-03 15:43:41

标签: java android mysql sqlite

我正在开发一个带有SQLite3数据库的Android应用程序,其中包含一些用于离线访问的数据。我正在尝试使用rawQuery查询数据库,并查询查询字符串的WHERE子句。但是,它没有返回任何结果,并且命令行上的SQLite3也不使用相同的Query,但是MySQL格式的数据库副本执行查询就好并获得正确的结果。

这是我的代码:

String query = "SELECT id FROM plaques WHERE subject = ?";
String subjectName = "Florence Nightingale";
Cursor cursor = db.rawQuery(query, new String[]{subjectName});
if (cursor.moveToFirst()) {
   do {
        try {
            int id = cursor.getInt(cursor.getColumnIndex("id"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    } while (cursor.moveToNext());
}
cursor.close();

(正在使用Context选择数据库,这是有效的。)

因此查询(SELECT id FROM plaques WHERE subject='Florence Nightingale'在MySQL中完全适用于数据库/表的精确副本,但在SQLite3中则不行。cursor.movetoFirst()返回为false,表示未返回任何结果)。 SQLite3是否以不同的方式对文本进行编码?如果我尝试查询WHERE子句选择int值,查询工作正常并返回预期结果。

0 个答案:

没有答案