Как заблокировать базу данных из нескольких потоков в Android? - PullRequest
1 голос
/ 04 июня 2011

В течение нескольких дней я сталкиваюсь со странным исключением:

IllegalStateException : database not opened.

На самом деле я обновляю базы данных из нескольких потоков, поэтому, возможно, я обновляю данные после закрытия.Поэтому, пожалуйста, скажите, как применить механизм блокировки и разблокировки для базы данных sqlite.

Здесь одна из функций базы данных.Пожалуйста, скажите мне, что-то не так.

if(cBookmark != null && !checkIfBookmarkExists(cBookmark)){
    SQLiteDatabase sqLiteDatabase = null;
    try{    
        sqLiteDatabase = mDatabaseHelper.getWritableDatabase();
        SQLiteStatement sqLiteStatement = sqLiteDatabase.compileStatement(
                "insert into chart_bookmark ( "+
                "package_id , chart_id , chart_title , offset_x, offset_y, zoomlevel )"+
                "Values( ?,?,?,?,?,?)");
        synchronized(sqLiteStatement){
            sqLiteStatement.bindString(1, cBookmark.getPackage_id());
            sqLiteStatement.bindString(2,cBookmark.getChart_id());
            sqLiteStatement.bindString(3, cBookmark.getChartTitle());
            sqLiteStatement.bindString(4, cBookmark.getOffsetX());
            sqLiteStatement.bindString(5,cBookmark.getOffsetY());
            sqLiteStatement.bindLong(6,cBookmark.getZoomlevel());
            Log.v(TAG, ""+cBookmark.getChart_id()+cBookmark.getChartTitle()+
                          cBookmark.getOffsetX()+cBookmark.getOffsetY());
            sqLiteStatement.execute();
            sqLiteStatement.close();
        }
    }finally{
        sqLiteDatabase.releaseReference();
    }
 }

1 Ответ

4 голосов
/ 04 июня 2011

Эта ссылка может вам помочь ...

Параллельный параллельный просмотр Android без исключений

Однако, не могли бы вы прояснить свой вопрос, еще больше спасибо!

Удачи!

РЕДАКТИРОВАНИЕ:

Найдена новая ссылка, которая относится к вашему вопросу ...

Доступ к базе данных SQLite из нескольких потоков

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...