SQLite クエリをString
withとして作成し、String.format
それを に渡していSQLiteDatabase.rawQuery
ます。最後に渡す整数パラメーターは、ゼロにハードコーディングされています (ゼロより大きい値を探しています)。これはすべてのテストで正常に機能しますが、現場からクラッシュ レポートを取得しています。詳細なシステム/環境情報を提供しないクラッシュ レポート Web サイトを使用しています。クラッシュしているコードは次のとおりです。
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 クラスで使用されるデフォルトでこれが新しいものである可能性があります。