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

问题描述 投票:0回答:1

我无法查询预先创建的数据库。我使用SQLite创建了一个SQLiteDatabaseBrowser数据库,我填充了它。以下querySQLiteDatabaseBrowser工作:

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();
    }
}

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

android android-sqlite
1个回答
1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.