私はAndroid開発に不慣れです。今私はsqliteデータベースを使用しようとしています。sqlitemanagerを使用してデータベースsqliteファイルを作成しました。/ data / data / packagename / dbnameでプロジェクトにインポートしましたが、エミュレーターでは正常に動作しますが、デバイスでリリースするとアプリがクラッシュし、何が発生し、なぜ発生するのかわかりませんでした。それについて何か提案はありますか?
4 に答える
そのように外部DBを使用することはできません。プロジェクトにインポートしても、その後すべてのデバイスで使用できるわけではありません(これにDDMSを使用したと仮定します)。これは、DBがその特定のエミュレーターでのみ使用可能であることを意味します。以下のリンクをたどって、アプリケーションに外部DBを追加する方法を確認してください。
http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
private void StoreDatabase() {
File DbFile=new File("data/data/packagename/DBName.sqlite");
if(DbFile.exists())
{
System.out.println("file already exist ,No need to Create");
}
else
{
try
{
DbFile.createNewFile();
System.out.println("File Created successfully");
InputStream is = this.getAssets().open("DBName.sqlite");
FileOutputStream fos = new FileOutputStream(DbFile);
byte[] buffer = new byte[1024];
int length=0;
while ((length = is.read(buffer))>0)
{
fos.write(buffer, 0, length);
}
System.out.println("File succesfully placed on sdcard");
//Close the streams
fos.flush();
fos.close();
is.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
このリンクを表示します。これは、Androidで独自のデータベースを使用している場合に非常に役立ちます。
http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
このチュートリアルでは、データベースをプロジェクトのアセットフォルダーに配置する必要があります。そうすると、データベースはデバイスのデータベースフォルダーに自動的に転送されます。
これを処理するヘルパーライブラリについては、https://github.com/jgilfelt/android-sqlite-asset-helperを参照してください。
(私はこのライブラリを個人的に使用したことはありませんが、昨日何か他のものを探しているときに見つけました。しかし、それはあなたが必要とすることをしているようです)。