Я использую SQLite в своем приложении.
База данных работает отлично.
Я могу вставлять, выбирать и обновлять строки, но в этом случае транзакция не выполняется.транзакция SQLite не совершенна
public int updateTransaction(String oldstatus, String newstatus) {
int result;
try {
mDB.beginTransaction();
ContentValues values = new ContentValues();
values.put("trx_status", newstatus);
result = mDB.update("transaktion", values, "trx_status = ?", new String[] { oldstatus });
Log.d("DB", "updateTransaction:number of updated rows:" + result);
mDB.setTransactionSuccessful();
} catch (SQLiteException e) {
Log.d("TAGAB", "Error:" + e.getLocalizedMessage());
result = -1;
} finally {
mDB.endTransaction();
}
Log.d("TAGAB", "in Transaction? " + mDB.inTransaction());
return result;
}
В LogCat:
"TAGAB" in Transaction? true
Обновления сначала предварительно, и, если я выбираю строки, я получаю строки с новым статусом.
После того, как приложение закрыто и снова запущено, строки снова имеют старый статус!
Является ли транзакция откатанной? Если да, то почему? База данных определяется как singleton.
private SQLiteDatabase mDB;
private static DatabaseAdapter INSTANCE;
Спасибо за быстрый ответ! Я не совершал никаких других транзакций. Это единственная транзакция. – slawek
Затем внешняя транзакция запускается чем-то другим - откуда вы вызываете этот метод? – laalto
Этот метод вызывается из любой активности после нажатия сохранить щелкают: DatabaseAdapter да = DatabaseAdapter.getInstance (нуль, dummyPassword "); INT результат = da.updateTransaction (" U», "Т"); // строки успешно updatet – slawek