我无法查询预先创建的数据库。我使用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();
}
}
调试代码查询不返回任何记录。
openOrCreateDatabase()
不会从资产中打开数据库文件,而是在应用程序的私有数据目录中打开。你实际上是在创建一个新的空数据库。
使用sqlite-asset-helper将资产中的数据库文件部署到应用程序的私有数据目录。