我无法查询预先创建的数据库

时间:2017-12-15 10:06:56

标签: android android-sqlite

我无法查询预先创建的数据库。 我使用SQLite创建了一个SQLiteDatabaseBrowser数据库,然后填充了它。 以下query适用于SQLiteDatabaseBrowser

SELECT png FROM flags64 WHERE iso3='jpn' LIMIT 1

我将android项目中"../assets/databases"文件夹中的文件移动到Android Studio中。 这是用于从我的Android应用程序查询数据库的代码:

SQLiteDatabase db = null;
try {
    db = getApplicationContext().openOrCreateDatabase(getApplicationContext().getDatabasePath("mysticker.db").getPath(), Context.MODE_PRIVATE, null);
    Cursor result = null;
    try {
        result = db.rawQuery(String.format("SELECT png FROM flags64 WHERE iso3='%s' LIMIT 1", country.toLowerCase()), null);
        if (result.getCount()>0) {
            result.moveToFirst();
            byte[] png = result.getBlob(result.getColumnIndex("png"));

            ByteArrayInputStream inputStream = new ByteArrayInputStream(png);
            playerCountryFlag.setImageBitmap(BitmapFactory.decodeStream(inputStream));
        }
    } catch (Exception e) {
        Log.e("mySticker", e.getStackTrace().toString());
    } finally {
        if (result != null) {
            result.close();
        }
    }
} finally {
    if (db.isOpen()) {
        db.close();
    }
}

调试代码查询不会返回任何记录。

1 个答案:

答案 0 :(得分:1)

openOrCreateDatabase()不会从资产中打开数据库文件,而是在应用程序的私有数据目录中打开。你实际上是在创建一个新的空数据库。

使用sqlite-asset-helper将资源中的数据库文件部署到应用的私有数据目录。