BEGİN TRANSACTİON Birden çok sorgu işlemini aynı anda kontrol yapmasını sağlıyor tümü doğru ise başarıyla kaydediyor. Değilse yapılan tüm değişikleri geri alıyor.
Örnek : Günlük sık kullandığımız e-Posta örnek olarak gösterecem.
E-Postayı yazdık alıcıya gönderdik.
Alıcıya gitti, Alıcının e-postası aktif, e-posta başarıyla gönderildi. 'Commit();'
Akif Değilse e-posta bize geri geldi, e-posta Başarısız gönderilmedi. ' RoolBack ();'
Bir Diğer Örnek : ATM Lerde para cekme, Gonderen ve Alici,
Gonderenin Hesabından para düş ,Alıcıya heabına ekle 'Commit();'
Gonderenin Hesabından para düş,Alıcıya hesabına eklenmedi, tekrardan Gonderenin hesabına ekle 'RoolBack();'
C# Begin Transaction Commit RoolBack
ilk başta tablomuzu oluşturalım.
Veritabaniismi : BEGINTRANS
Tablo : PARAGONDEREN
Tablo: PARAALICI
PARAGONDEREN COLON: ID INT, GONDERENAD NVARCHAR(150), HESAP MONEY;
// formuzu bu şekilde ayarlıyalım. Gelelim kodlamaya
using System.Data.SqlClient;
SqlConnection Con=SqlConnection (@"Server=SebihCicek; DataBase=BEGINTRANS; uid=KullanıcıAd;Password=Sifre");
//Şifresiz
SqlConnection Con=SqlConnection (@"Server=SebihCicek ;Initial Catalog=BEGINTRANS; integrated security=true");
Örnek : Günlük sık kullandığımız e-Posta örnek olarak gösterecem.
E-Postayı yazdık alıcıya gönderdik.
Alıcıya gitti, Alıcının e-postası aktif, e-posta başarıyla gönderildi. 'Commit();'
Akif Değilse e-posta bize geri geldi, e-posta Başarısız gönderilmedi. ' RoolBack ();'
Bir Diğer Örnek : ATM Lerde para cekme, Gonderen ve Alici,
Gonderenin Hesabından para düş ,Alıcıya heabına ekle 'Commit();'
Gonderenin Hesabından para düş,Alıcıya hesabına eklenmedi, tekrardan Gonderenin hesabına ekle 'RoolBack();'
C# Begin Transaction Commit RoolBack
ilk başta tablomuzu oluşturalım.
Veritabaniismi : BEGINTRANS
Tablo : PARAGONDEREN
Tablo: PARAALICI
PARAGONDEREN COLON: ID INT, GONDERENAD NVARCHAR(150), HESAP MONEY;
PARAALICI COLON: ID INT, ALICIAD NVARCHAR(150), HESAP MONEY;veritabanımızı oluşturuldu sonra gelelim formumuzu tasarlamaya
// formuzu bu şekilde ayarlıyalım. Gelelim kodlamaya
using System.Data.SqlClient;
SqlConnection Con=SqlConnection (@"Server=SebihCicek; DataBase=BEGINTRANS; uid=KullanıcıAd;Password=Sifre");
//Şifresiz
SqlConnection Con=SqlConnection (@"Server=SebihCicek ;Initial Catalog=BEGINTRANS; integrated security=true");
SqlCommand Gonderen=new SqlCommand("Update PARAGONDEREN SET HESAP=@HESAP WHERE ID=@ID",Con);
Gonderen.Parameters.AddWithValue("@HESAP",TextBox1.Text);
Gonderen.Parameters.AddWithValue("@ID","1");
//Gonderenin ID'si 1 olanda işlem yacapaz
SqlCommand Alici=new SqlCommand("Update PARAALICI SET HESAP=@HESAP WHERE ID=@ID",Con);
Alici.Parameters.AddWithValue("@HESAP",TextBox2.Text);
Alici.Parameters.AddWithValue("@ID","2");
//Gonderenin ID'si 2 olanda işlem yacapaz
SqlTransaction SqlTrans=Con.BeginTranscation();
try
{
//EĞER SORGULARIMIZ İKİSİDE DOĞRU İSE SORUNSUZ ÇALIŞTIYSA İŞLEM COMMİTLE ONAYLIYORUZ.
Gonderen.Transaction=SqlTrans;
Gonderen.ExecuteNonQuery();
Alici.Transaction=SqlTrans;
Alici.ExecuteNonQuery();
SqlTrans.Commit();
}
Catch
{
//İŞLEM BAŞARASIZ OLURSA TÜM İŞLEMLERİ GERİ ALIYORUZ.
SqlTrans.RoolBack();
}
son olarak birden çok transaction kullanıldı diyelim. Açık olan transaction sayısını öğrenmek için
SELECT @@TRANCOUNT
son olarak birden çok transaction kullanıldı diyelim. Açık olan transaction sayısını öğrenmek için
SELECT @@TRANCOUNT
Yorum Gönder