我正在构建一个 SQLite 查询作为String
withString.format
并将其传递给SQLiteDatabase.rawQuery
. 我最后传递的整数参数被硬编码为零(我正在寻找任何大于零的值)。这在我的所有测试中都正常工作,但我从现场收到了崩溃报告。我使用的崩溃报告网站没有提供详细的系统/环境信息。这是崩溃的代码:
String query = String.format("SELECT * FROM %s WHERE %s > %d",
TableName,
ColumnName,
0);
Cursor c = db.rawQuery(query, null);
抛出的异常如下:
android.database.sqlite.SQLiteException: no such column: Û°: , while
compiling: SELECT * FROM TableName WHERE ColumnName > Û°
崩溃前堆栈跟踪中的最后几行是:
SQLiteCompiledSql.java:-2:in android.database.sqlite.SQLiteCompiledSql.native_compile
SQLiteCompiledSql.java:68:in android.database.sqlite.SQLiteCompiledSql.<init>
SQLiteProgram.java:143:in android.database.sqlite.SQLiteProgram.compileSql
这看起来一定是编码错误。但是,我不知道如何判断这是什么原因。我正在使用SQLiteOpenHelper
高级方法来创建和连接到我的数据库,所以我没有明确设置编码。此外,错误报告很少,但它们只出现在运行 ICS 的设备上,因此这可能是 ICS 中 SQLite 类中使用的默认值中的新内容。