1

在我的应用程序中,我正在获取数据库被锁定。

我尝试使用其他帖子中提供的解决方案,但找不到合适的解决方案,这就是我发布这个问题的原因。

这是 onCreate

DBAdapter db = new DBAdapter(this.getApplicationContext());
        dialoge = new Progress_Dialog(this);
        dialoge.setCancelable(false);
        try {
            db.createDataBase();
        } catch (IOException e) {
            e.printStackTrace();
        }

这是创建数据库方法

public void createDataBase() throws IOException{     
            boolean dbExist = checkDataBase();     
            if(!dbExist){
                this.getReadableDatabase();     
                try {     
                    copyDataBase();
                } catch (IOException e) {     
                    e.printStackTrace();
                    throw new Error("Error copying database");     
                }
            }
        }

以下是检查数据库方法

 private boolean checkDataBase(){     
            SQLiteDatabase checkDB = null;
            try{
                String myPath = DB_PATH + DB_NAME;

                String myPath2 = DB_PATH + DB_NAME2;

                checkDB = SQLiteDatabase.openDatabase(myPath, null, 
                        SQLiteDatabase.OPEN_READWRITE);

                if(checkDB != null){
                    checkDB.close();

                }
                checkDB = SQLiteDatabase.openDatabase(myPath2, null, 
                        SQLiteDatabase.OPEN_READWRITE);

            }catch(SQLiteException e){
        //      e.printStackTrace();
                //database does't exist yet.
                System.out.print("SQLiteException   "+e.toString());
            }
            if(checkDB != null){
                checkDB.close();

            }
            return checkDB != null ? true : false;
        }

请帮助我。

4

2 回答 2

6

发生“锁定”是因为您试图打开多个SQLiteDatabase实例。按照这篇文章SQLiteDatabase中的描述制作你的单身人士。

于 2013-02-12T05:34:15.860 回答
-4

改变这个方法 this.getReadableDatabase(); 到 this.getWritableDatabase();

它会工作......

于 2013-02-12T05:26:57.497 回答