当我在Android中创建它后尝试getReadableDatabase()时,SQLite被锁定

时间:2011-06-14 23:53:00

标签: android sqlite

在我的Android应用程序中,我有以下代码创建我的数据库。这没有问题,但直接在执行此代码后我尝试getReadableDatabase()并且它说数据库被锁定抛出异常

我需要在这里关闭/破坏任何东西以防止它被锁定吗?谢谢!

//这样做是为了看它是否已经创建

private boolean checkDataBase() {
        SQLiteDatabase checkDB = null;

        try {
            String myPath = "/data/data/com.hats.android/databases/";
            checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);

        } catch (SQLiteException e) {
            //database does't exist yet.
        }

        if (checkDB != null) {
            checkDB.close();
        }
        return checkDB != null ? true : false;
    }

//然后完成以下操作来创建它(此后是getReadableDatabase()错误)

    @Override
    public void onCreate(SQLiteDatabase db) {
            SQLiteDatabase checkDB = null;
            String myPath = "/data/data/com.hats.android/databases/";
            checkDB = this.myContext.openOrCreateDatabase(myPath, SQLiteDatabase.CREATE_IF_NECESSARY, null);
            checkDB.execSQL("CREATE TABLE hats (hat_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT)");
            checkDB.close();
    }

1 个答案:

答案 0 :(得分:1)

在你的onCreate()中你不需要做任何这些。您只需要execSQL行,而不是:

checkDB.execSQL("CREATE TABLE hats (hat_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT)");

只需使用传入的db:

db.execSQL("CREATE TABLE hats (hat_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT)");