数据库被锁定在getReadableDatabase()android中

时间:2013-02-12 04:52:34

标签: android sqlite

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

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

这是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");     
                }
            }
        }

以下是checkdatabase方法

 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;
        }

请帮助我。

2 个答案:

答案 0 :(得分:6)

正在发生“锁定”,因为您尝试打开多个SQLiteDatabase实例。按照此post中的说明,将SQLiteDatabase设为单身人士。

答案 1 :(得分:-4)

更改此方法this.getReadableDatabase(); to this.getWritableDatabase();

它会起作用......