SQLite блокируется, когда я пытаюсь получить getReadableDatabase () после его создания в Android - PullRequest
0 голосов
/ 15 июня 2011

В моем приложении для 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 Ответ

1 голос
/ 15 июня 2011

В вашем onCreate () вам не нужно ничего этого делать. Все, что вам нужно, это строка execSQL, но вместо:

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

просто используйте переданные в БД:

db.execSQL("CREATE TABLE hats (hat_id INTEGER PRIMARY KEY AUTOINCREMENT, type TEXT)");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...