【问题标题】:java.lang.illegalstateexception database not open androidjava.lang.illegalstateexception 数据库未打开android
【发布时间】:2012-05-29 19:26:14
【问题描述】:

当我尝试插入数据库日志时,cat 显示类似 java.lang.illegalstateexception database not open android. 的错误

但我已经使用

打开了数据库
   db = SQLiteDatabase.openDatabase(DATABASE_PATH, null,
                SQLiteDatabase.OPEN_READWRITE);

这个错误不是经常发生。有人知道这是什么原因吗?

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    试试这样:

      if (!db.isOpen()) {
           db = getApplicationContext().openOrCreateDatabase(DATABASE_PATH, SQLiteDatabase.OPEN_READWRITE, null);
         }
    

    【讨论】:

    • 我试过了,但我添加了 SQLiteDatabase.How 将在从 SQLiteOpenHelper 扩展的类中获取 applicationcontext 而不是 getApplicationContext()
    • 所以SQLiteOpenHelper 的构造函数需要一个参数Context context 所以context.openOrCreateDatabase() ...
    【解决方案2】:

    试试

    DatabaseHelper dataHelper;
    SQLiteDatabase mDb;
        public DbManager openDB() throws SQLException {
    
        mDb = dataHelper.getWritableDatabase();
        return this;
    }
    

    并在您重新编写当前代码的地方调用此方法。

    【讨论】:

      【解决方案3】:

      试试这个代码

       public class DataBaseHelper extends SQLiteOpenHelper{
          public SQLiteDatabase openDataBase() throws SQLException{
      
                  //Open the database
      
                  File dbFile = _myContext.getDatabasePath( DB_PATH + DB_NAME ); 
                  _myDataBase = SQLiteDatabase.openDatabase(dbFile.toString(), null, SQLiteDatabase.OPEN_READWRITE);
      
                  return _myDataBase;
              }//end of openDataBase() method
      }
      

      【讨论】:

        【解决方案4】:

        也许您正在打开一个已打开的数据库。每次工作完成后关闭数据库。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-03-23
          • 2012-09-07
          • 2011-05-28
          • 2018-02-05
          • 1970-01-01
          • 2013-05-27
          • 1970-01-01
          相关资源
          最近更新 更多