1
我從服務器獲取大量信息並將它們加載到SQLite數據庫(大約4000行)中。我使用下面的代碼插入信息:當按下電源按鈕時,Android SQLite數據庫被鎖定(屏幕關閉)
String DB_PATH = "/data/data/com.example.app.myapplication/databases/";
String DB_NAME = "mydb.sqlite";
SQLiteDatabase sqdb = SQLiteDatabase.openDatabase(DB_PATH + DB_NAME, null, SQLiteDatabase.NO_LOCALIZED_COLLATORS);
try {
//Getting info
sqdb.beginTransaction();
String[] all_elements = all.split("_");
for (int j = 0; j < all_elements .length; j++) {
if (all_elements [j].length() >= 1) {
m.setLength(0);
m.append("insert into .....the query");
m.append(");");
sqdb.execSQL(m.toString().replaceAll("\n", "").replaceAll("\r", "").replaceAll("\t", ""));
changeProgressMessage("Adding element " + String.valueOf(j + 1) + "/" + String.valueOf(all_elements .length));
}
}
sqdb.setTransactionSuccessful();
sqdb.endTransaction();
}
catch (Exception ex)
{
Log.d("Error",ex.toString());
sqdb.setTransactionSuccessful();
sqdb.endTransaction();
}
點,在插入時的信息,如果我按下電源按鈕或屏幕關閉時,該應用程序崩潰,我得到說,一個錯誤數據庫被鎖定。 請注意,我正在使用另一個連接到SQLite數據庫,但在使用第二個數據庫之前我已關閉它。
db.openDataBase();
String[] array_elements = array.split("_");
for (int i = 0; i < array_elements .length; i++) {
String Details = "";
if (!array_elements [i].isEmpty() && !array_elements [i].equals("")) {
mbuilder.setLength(0);
mbuilder.append(array_elements [i] + ",'" + helper.getdatetime() + "'");
db.insertelements(mbuilder.toString(), "Element");
changeProgressMessage("Element" + String.valueOf(i + 1) + "/" + String.valueOf(array_elements .length) + " inserted");
}
}
db.close();
請幫忙嗎?
是否可以發佈您的logcat? –