Какие методы SQLite сделать синхронизированными?

FileBackupHelper выполняет резервное копирование моей базы данных, и в руководстве говорится, чтобы синхронизировать это действие с доступом к файлу БД в моем приложении. Я пытаюсь выяснить, где это необходимо.

Я мог синхронизировать определенные функции или весь доступ. Я рассматриваю три варианта:

1) Синхронизировать только изменения базы данных (записи)

synchronized(MyLocks.DBLock){
    db.insert(MY_TABLE, null, contentValues);
    db.update(MY_TABLE, contentValues, KEY_ID + " = ?", new String[]{str})});
}

2) Также синхронизировать чтение базы данных в моем адаптере.

synchronized(MyLocks.DBLock){
    db.insert(MY_TABLE, null, contentValues);
    db.update(MY_TABLE, contentValues, KEY_ID + " = ?", new String[]{str})});

    Cursor c = db.query(true, MY_TABLE, new String[] {KEY_EC}, KEY_ID + "=" + id, null, null, null, null, null);
    if (c != null && c.getCount() > 0) {
        c.moveToFirst();
    } else{
        if(c != null)
            c.close();
        return null;
    }
    Double d = Double.valueOf(c.getDouble(c.getColumnIndex(KEY_EC)));
    c.close();
}

3) Синхронизируйте все с момента, когда активность открывает адаптер базы данных.

// in an activity

DBAdapter dba = new DBAdapter(context);
synchronized(MyLocks.DBLock){
    dba.open();
    dba.doDatabaseOperation();
    dba.close();
}

Какой из этих подходов необходим?

0 ответов

Другие вопросы по тегам