У меня проблема, похожая на этот вопрос.
В настоящее время я вставляю данные в свою базу данных SQLite следующим образом:
private Context context;
private SQLiteDatabase database;
private SQLiteHelper dbHelper;
public DBManager open() throws SQLException {
this.dbHelper = new SQLiteHelper(context);
this.database = this.dbHelper.getWritableDatabase();
return this;
}
public void close() {
this.dbHelper.close();
}
void insertThumb(String _id, String thumbPath, String videoPath) {
ContentValues contentValue = new ContentValues();
contentValue.put(SQLiteHelper._ID, _id);
contentValue.put(SQLiteHelper.THUMB_PATH, thumbPath);
contentValue.put(SQLiteHelper.VIDEO_PATH, videoPath);
this.database.insert(SQLiteHelper.TABLE_NAME_THUMBNAIL, null, contentValue);
}
Мой SQLiteHelper
extends SQLiteOpenHelper
.
Я открываю свою базу данных в OnCreate
своей Деятельности, когда я хочу вставить в свою базу данных следующий вызов:
dbManager.insertThumb(String.valueOf(_id), newFile.getPath(), directoryToStore + "/" + fileName);
Я закрываю базу данных, когда я закончу сЗадание (OnBackPressed
, OnDestroy
).
Глядя на вопрос, указанный выше, в принятом ответе говорится:
use a SQLiteOpenHelper and call getWritableDatabase() every time you need one.
I 'я делаю это, не так ли?
Второй ответ говорит:
SQLiteDatabase is closed automatically under some conditions.
Должен ли я тогда открыть базу данных, когда она мне понадобится, и закрыть еесразу после того, как я закончил?Вот так -
dbManager.open();
dbManager.insertThumb(String.valueOf(_id), newFile.getPath(), directoryToStore + "/" + fileName);
dbManager.close();
Может кто-нибудь сказать, пожалуйста, как лучше всего избегать этой проблемы?