2016-01-21 93 views
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(); 

请帮忙吗?

+0

是否可以发布您的logcat? –

回答

1

对不起,我正在访问数据库的恢复方法,所以当关闭屏幕然后打开时,恢复方法也被称为里面的数据库方法,它解释了崩溃。

相关问题