具有特殊字符的Android SQL数据库无法访问

时间:2014-05-20 20:17:16

标签: android sql csv sqlite

我有一个附带预先存在的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?

0 个答案:

没有答案