Makale Özeti

Bu yazıda temel ADO.Net işlemleri üzerinde duracağız.

Makale

ADO.Net Temel İşlemler

ADO.Net TEMEL İŞLEMLER

DataSet Nesnesi ve Xml
DataSet nesnesi herhangi bir veri tipini kullanabilir. Ona bu geniş yelpazeyi sunan Xml’dir. Xml sayesinde com ve com+ nesnelerinin aksine, Xml düz bir metin olarak tanımlandığından, (firewall) ateş duvarları arasından port80’i kullanarak standart bir html dosyası gibi akabilir. Bu sayede bilgi olağanüstü büyüklükteki ağlara hiçbir sorun çıkarmadan dağıtılabilir.

DataAdapter nesnesinin Fill metodu kullanılarak bir Dataset üretilebilir. Bir DataAdapter ile birden çok DataTable veya DataSet üretilebilir.DataSet nesnesinin genel kullanımına ilişkin bir örnek aşağıda verilmiştir.

Dim connstr As String
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=c:\db.mdb;Mode= ReadWrite"
Dim cnn As OleDbConnection
Dim dbDa As OleDbDataAdapter
Dim dbDs As DataSet
dbDa = New OleDbDataAdapter("sql_select_cümlecigi", cnn)
dbDs = New DataSet()
dbDa.Fill(dbDs, "data_table_adi")

DataSet Üzerine yeni kayıt ekleme

Dim dbRow as DataRow
dbRow=dbDs.Tables("datasetteki_tablo_adi").NewRow()
dbRow("alan1")="deger1"
dbRow("alan2")="deger1"
dbDs.Tables("recordset_name_in_ds").Rows.Add(dbRow)
dbDa.Update(dbDs,"data_table_adi")


DataSet Nesnesinde Filtreleme
Dataset üzerinde filtreleme DataTable nesnesinin select metodu sayesinde yapılabilir.Örnek kodlar aşağıda verilmiştir.

Dim rows() as DataRow
rows=ds.Tables(0).Select("istenilen_kosullar")

DataView Nesnesi
DataView nesnesini kullanarak verilen herhangi bir tablonun çeşitli görünüşlerini oluşturabilirsiniz. Örneğin; Yaş ve Cinsiyet sütunlarından oluşan İşçiler tablosu olsun.. DataView nesnesini kullanarak yaş ve cinsiyet için iki farklı görünüş çıkarabilirsiniz. DataView nesnesi hem Windows formları hem de Web formlarına doğrudan bağlanabilmek için tasarlanmıştır. Aşağıdaki tablo DataView nesnesinin bazı önemli özelliklerini göstermektedir.

Özellik Tanımlamaları
.Table :Kaynak DataTable’ı görünüş için döndürür ve/veya ayarlar.
.
Sort :Sıralanacak sütunu,artan veya azalan olacağını döndürür/ayarlar.
.
RowFilter :Hangi satırlarının görüneceğini belirten ifadeye döndürür/ayarlar.

Hata Yakalama
Hata yakalama ( error handling) için değişik metotlar kullanılabilir. En çok kullanılan metot try ... catch metodudur.

ADO.Net satır düzeyinde hata mesajları mekanizması da sunar.

Aşağıdaki örnekte satır düzeyi hata mesajlarının nasıl düzenleneceği görülüyor. Veritabanında bir hata durumunda RowError property‘si ADO.Net tarafından ayarlanıyor.

Dim cnn as OleDbConnection
Dim cmd as OleDbDataAdapter
Dim ds as Dataset
Dim errors as DataRow()

cnn=new OleDbConnection("baglanti_cümlecigi")
cnn.open()
ds=new dataset()
cmd=new OleDbDataAdapter("select_cümlecegi",cnn)
cmd.Fill(ds,"data_table_adi")

ds.Tables("data_table_name").Rows(0).RowError = "hata mesajları"
ds.Tables("data_table_name").Rows(1).RowError = "hata mesajları"

if ds.tables("tablo_adi").HasErrors then
errors = ds.tables("datatable_adi").GetErrors()
hatalı kayıtlarla ilgili işlemler
end if

Transaction (İşlem) Takibi
ADO.Net OleDb Transaction nesnesi ile bir transaction (işlem) takibini olanaklı hale getirir.Bu nesne OleDbConnection - BeginTransaction metodu tarafından döndürülür. Transaction kritik işlemlerde kontrolü mümkün kılar. Örneğin bir banka hesabından havale yapılırken para çekildikten sonra havale yapılacak noktada hata oluşursa, müşterinin heabından para çekilmiş ama havale yapılamamış olabilir.Bu gibi kritik veritabanı uygulamarında transaction kullanılır. ADO.Netin sağladığı transaction nesnesi sayesinde bu sorun profesyonel olarak çözülebilir.Örnek transaction kodları aşağıda verilmiştir.Dikkat edilmesi gereken nokta transaction içinde yapılan veritabanı işlemlerinin transaction onaylanana kadar çalıştırılmamasıdır.



Dim tran as OleDbTransaction
Dim cnn as OleDbConnection

cnn=new OleDbConnection("baglanti_cümlecigi")
try
cnn.open()
tran= cnn.BeginTransaction()
cmd=new OleDbCommand("sql_islemleri",cnn)

cmd.Transaction=tran
cmd.ExecuteNonQuery()
işlem veritabanına uygulanmadı

cmd.commandtext= "baska_sql_islemleri"
cmd.ExecuteNonQuery()
işlem veritabanına uygulanmadı

tran.Commit()
işlem veritabanına UYGULANDI

catch myException as Exception

tran.Rollback()
işlem veritabanına uygulanmadan İPTAL EDİLDİ.

end try

Kâsım GÜLCAN
SQLNedir?com