Я получаю сообщение об ошибке в моем классе операций sqlite db.получение исключения в методах работы базы данных sqlite в android
Ошибка заключается в следующем: java.lang.IllegalStateException: попытка повторно открыть уже замкнутый объект:
Мой код выглядит следующим образом:
public void incrementViewCountForShow(String showId){
SQLiteDatabase db = this.getWritableDatabase();
showViews(showId);
String query = "UPDATE " + TABLE_SHOWS + " SET " + COLUMN_SHOW_VIEWS + "=" + COLUMN_SHOW_VIEWS + "+1" + " WHERE " + COLUMN_SHOW_ID + "=" + showId ;
db.rawQuery(query, null);
showViews(showId);
db.close();
}
private void showViews(String showId){
boolean isFirst = true;
StringBuilder strBuilder = new StringBuilder();
SQLiteDatabase db = this.getReadableDatabase();
String query = "SELECT " + COLUMN_SHOW_NAME_EN + "," + COLUMN_SHOW_VIEWS + " FROM " + TABLE_SHOWS + " where " + COLUMN_SHOW_ID + "=" + showId;
Cursor cursor = db.rawQuery(query, null);
if (cursor != null) {
while (cursor.moveToNext()) {
strBuilder.append(cursor.getString(0));
}
}
cursor.close();
db.close();
}
Что является причиной этой ошибки ? Как это исправить?
** Мы не можем сделать две операции в том же методе? (Чтение из БД дважды)
Благодарности
спасибо за быстрый ответ. Я создал db и реализовал все методы доступа db в том же классе. Каким будет лучший способ использования sqlite db в android? – chathura
@ chathura2020: Нет единого «лучшего» способа. Но не закрывайте свой 'SQLiteOpenHelper' (и, следовательно, его' SQLiteDatabase') до тех пор, пока вы не закончите с ним полностью. – CommonsWare