2017-12-15 11 views
0

事前に作成されたデータベースを照会することができません。 SQLiteDatabaseBrowserを使用してSQLiteデータベースを作成しました。 SQLiteDatabaseBrowserで 次query作品:あらかじめ作成されたデータベースを照会できません

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

私は、Android Studioにアンドロイドプロジェクト内のフォルダ"../assets/databases"にファイルを移動しました。 これは私の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(); 
    } 
} 

は、クエリがレコードを返さないコードをデバッグします。

+0

最初にcountry.toLowerCase()が 'jpn'を返すことを確認します。次に、文字列連結を使用してクエリを構築しますが、パラメータバインディングを使用しないでください。 – StephaneM

答えて

1

openOrCreateDatabase()アセットのデータベースファイルを開くのではなく、アプリのプライベートデータディレクトリを開きます。あなたは基本的に新しい空のデータベースを作成しています。

sqlite-asset-helperを使用して、アセットのデータベースファイルをアプリのプライベートデータディレクトリに配置します。

関連する問題