私はかなり困惑しています。私はcsvファイルからデータベースに挿入するスレッドをアプリケーションに持っています。すべてがうまく見えますが、最近、開発者用コンソールからデータベースにスタックトレースが届いていません。アンドロイド散在データベースが開かない
これは私のユーザーのほんの一部に過ぎず、おそらく100人に1人がこの問題を抱えています。私は何度もエラーを表示する前に挿入物を実行できます。それがうまくいけば他の80回。
HERESにスタックトレース:
コードのjava.lang.IllegalStateException:データベースはandroid.database.sqliteでandroid.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1615) で を開けません。 SQLiteDatabase.insert(SQLiteDatabase.java:1515) (com.ljworkshop.YugiohCompanion.DBAdapterCards.insertCard(DBAdapterCards.java:169) at com.ljworkshop.YugiohCompanion.home $ 8.run(home.java:1020) at java .lang.Thread.run(Thread.java:1027)
は、相続人セクション:
public void cardBaseupdate(String file,int amount) {
final String files = file;
final int amountf = amount;
dialog = new ProgressDialog(home.this);
dialog.setCancelable(false);
dialog.setMessage("Populating Database");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setProgress(0);
dialog.setMax(amountf);
dialog.show();
Thread background = new Thread (new Runnable() {
public void run() {
InputStream data1 = null;
try {
data1 = getAssets().open(files);
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader in = new BufferedReader(new InputStreamReader(data1));
String reader = "";
try {
while ((reader = in.readLine()) != null){
Integer.toString(in.readLine().length()),
String[] RowData = reader.split(",");
String name = RowData[0];
String number = RowData[1];
String series = RowData[2];
String type = RowData[3];
String element = RowData[4];
String level = RowData[5];
String spell = RowData[6];
String att = RowData[7];
String def= RowData[8];
String rules = RowData[9];
String legal = RowData[10];
dbc.open();
progressHandler.sendMessage(progressHandler.obtainMessage());
dbc.insertCard(name,number,series,type,element,level,spell,att,def,rules,legal);
dbc.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
valueSet = true;
}
});
background.start();
こんにちは、ご感謝のご返信ありがとうございました。最後に、私はデータベースをどのように埋め込んだのかを完全に再現しました。あなたは、スレッドでcsvをループするとは言いませんが、最良の理由はありません。データベースを資産にパッケージングし、それをコピーします。これははるかに優れています。 –