Android | Transactionları kullanma

Written by Super User. Posted in Android Anlatımlar

Veritabanlarıyla haşır neşir olanlarımıza Transaction kavramı tanıdık gelecektir. Bu kavramı ekşisözlük'teki güzel anlatan şu entry ile hatırlayalım. Bizde Android'de yapmak istediğimiz veritabanı işlemlerinde, ard arda yapacağımız veritabanı işlemlerinin birtanesinde hata olduğunda veritabanı bütünlüğünün ve tutarlılığının korunması için sorunsuz işlemlerin de geri alınmasını isteyebiliriz. Yani tüm işlemler sorunsuz gerçekleşebilecekse, hepsini uygula, herhangi birisinde sorun çıkacaksa hiç birisini uygulama mantığı. Bu kavramın Android veritabanı işlemlerinde uygulanmasını bir kod parçası üzerinden inceleyelim;

//Transaction'ımızı başlatıyoruz.

database.beginTransaction();
try{
ContentValues values = new ContentValues();
values.put(FATURA_TARIH, fatura_tarih);
values.put(TUTAR,d );
values.put(KART_ID, kart_id);      
values.put(FMAGAZA_ID, magaza_id);

//1. veritabanı işlemimiz
database.insertOrThrow(FATURA, null, values);
ContentValues values2 = new ContentValues();
values2.put(BARKOD_NO, barkod_no);
values2.put(ADET, adet ); 
values2.put(FFATURA_ID, max_id+1 );

//2. veritabanı işlemimiz
database.insertOrThrow(FATURA_ICERIK, null, values2);

//Veritabanı işlemlerimiz sorunsuzsa, işlemleri gerçekleştiriyoruz.
database.setTransactionSuccessful();

//Transaction'ımızı bitiriyoruz.
database.endTransaction();


}catch(Exception e){

//Veritabanı işlemlerimizde sorun çıkarsa, transaction'ı bitirip exception fırlatıyoruz.
database.endTransaction();
throw e;

}