我有一个附带预先存在的SQL数据库的APP。我使用SQLiteAssetHelper(https://github.com/jgilfelt/android-sqlite-asset-helper)lib来管理这个预先存在的数据库。为了填充数据库,我使用了sqlite3.exe命令行程序的.import命令。我的数据库是.csv文件格式。如果我的.csv文件是ANSI格式(不支持像éúã这样的字符),一切正常。但是当我保存我的.csv文件(通过记事本)并选择UTF-8编码时,我的应用程序崩溃了。我用sqlite3.exe导入ok,我甚至用SQLite数据库浏览器检查并将所有信息导入数据库确定。但是在Android中会出现以下错误:
05-20 16:05:50.355: E/AndroidRuntime(1294): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.baianos.quizbaianos/com.baianos.quizbaianos.QuestionActivity}: android.database.CursorIndexOutOfBoundsException: Index 0 requested, with a size of 0
在我的应用中执行查询的代码是:
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor =
db.query(DB_NAME, // a. table
COLUMNS, // b. column names
" _id = ?", // c. selections
new String[] { String.valueOf(id) }, // d. selections args
null, // e. group by
null, // f. having
null, // g. order by
null); // h. limit
if (cursor != null)
cursor.moveToFirst();
return cursor.getString(1);
似乎我的查询没有返回任何行,因为当我传递'id = 1'(或任何其他数字)并将其与数据库进行比较时,来自android的1与sql数据库中的1不同(因为编码不同)。 如何在代码中告诉我在数据库中使用UTF-8?