我正在开发一个带有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值,查询工作正常并返回预期结果。