Make your own free website on Tripod.com

ADO.NET'e Giriş

Temel Başlıklar

  • Ado.NET nedir?
  • ADO.NET ile ADO arasındaki fark nedir?
  • Provider lar nasıl kullanılır?
  • .Net içinde veriye erişim yçntemleri?
  • ADO.NET içindeki temel nesneler
  • Veri Tabanına bağlanma
  • Command nesnesi'inin action sorgularda kullanımı
  • Command nesnesi'inin Select  sorgularında kullanımı
  • Command nesnesi'inin Stored Procedure'lerde kullanımı
  • DataAdapter ve Dataset
  • Dataset ile işlemler

ADO.NET Nedir?

Microsoft'un .Net platformunda veri erişim teknolojisinin yeni jenerasyonudur.İnternet ve dağıtılmış uygulamalar için ado.net kullanılır.Ado.Net, xml için güçlü bir destek sağlamasının yanında veri sürecine bağlı olmadan(offline) çalışmayada olanak sağlar.

ADO.NET'in  ADO'dan farkı nedir?

Ado.net ADO'dan oldukça farklıdır.Programcılar offline veritabanına bağlantı için RDS gibi çeşitli yöntemler kullanmaktadırlar.ADO'nun nesne modeli ADO.NET'e göre daha dar kapsamlıdır.

Ado.net , ADO'dan daha farklıdır.Veritabanına offline  olarak bağlanabilmek için programcılar çeşitli  yollar geliştirmişlerdi,offline recordset gibi.ADO:NET ile karşılaştırıldığında ADO'nun nesne modeli daha az kapsamlıdır.Uygulamalarda hem ado hemde ADO.NET kullanılabilinir.

Provider'ların kullanımı:

ODBC driver ile OLEDB provider'ına benzer bir provider'dır.Veritabanı ile bağlantılı yapılan işlemlerde kullanılır.ADO.NET 2 provider sağlar.Birtanesi SQLServer Managed Provider'ı , bu oldukça verimli ve etkin olarak bağlantı şeklidir.OLEDB managed Provider  ise Access ve diğer veritabanlarına bağlanırken kullanılır.Bu veriye erişim API'leri aynı isimuzayı içindedir.

.Net içindeki veriye erişim isimuzayları :

En yaygın

  • System.Data
  • System.Data.OleDb
  • System.Data.SQLClient
  • System.Data.SQLTypes
  • System.Data.XML

ADO.NET'in Temel  Nesneleri :

  • OleDbConnection / SQLConnection
  • OleDbCommand / SQLCommand
  • OleDbDataReader / SQLDataReader
  • OleDbDataAdapter / SQLDataAdapter
  • OleDbParameter / SQLParameter
  • DataSet
  • DataTable
  • DataView
  • DataRow
  • DataColumn

Yukarıda belirtilen bir çok nesne 'Stand-alone' şekilde oluşturulabilinir.Aşağıdaki açıklamalarda oledb nesneleri ile örnekler verilmiştir.SQL Server nesneleri kullanılırken de sadece nesnelerin başındaki ilk isim oledb yeni sqlclient oluyor.

Veritabanına Bağlantı nasıl kurulur?

ADO'dakine benzer bir veritabanına bağlantı yolu kullanılır:

Dim oConn as OleDbConnection
oConn=new OleDbConnection("OLEDB_connection_cumlesi") 

oConn.open()
'Açılan bağlantı burada kullanılır

oConn.close() 

Action sorgularında Command nesnesi kullanımı:

Dim oCmd as OleDbCommand
Dim oConn as OleDbConnection
oConn=new OleDbConnection("OLEDB_connection_cumlesi") 

oConn.open()

oCmd=new OleDbCommand("sorgu",oConn)        
oCmd.ExecuteNonQuery()
oCmd.CommandText= "sorgu_cumlesi"
 

Select sorgularında Command Nesnesi  nasıl kullanımı:

Bir DataReader'a  Command nesnesinin sorgu sonucunu atadıgımızda sorgu sonucu kayıtlarını biriktirebiliriz.BuDatareader verileri sadece okumamıza yarar.ReadOnly recordset gibi.

Dim oDr as OleDbDataReader
Dim oCmd as OleDbCommand
Dim oConn as OleDbConnection
oConn=new OleDbConnection("OLEDB_connection_cümlesi") 

oConn.open()

oCmd=new OleDbCommand("select_sorgumuz",oConn)

oDr=oCmd.ExecuteReader()

do while oDr.read()

   response.write(oDr("alan1"))

loop

ODr.close()

Command Nesnesi kullanarak Stored Procedure'ü çalıştırmak:

Stored Prosedürlerin çalıştırılması tıpkı sorgular gibidir:

Dim oCmd as OleDbCommand

Dim p as OleDbParameter
Dim oCmd as OleDbCommand
Dim oConn as OleDbConnection
oConn=new OleDbConnection("OLEDB_connection_cümlesi") 

oConn.open()

oCmd=new OleDbCommand("stored_procedur_adı",oConn)

p=new OleDbParameter("name",type,width)

p.value="deger"
oCmd.parameters.Add(p)
'add all the parameters in the same way

   oCmd.ExecuteNonQuery()

Data Adapter ve DataSet

Dataset veritabanımızdaki verilerin veritabanına bağlantımız olmadanda  taşımayı sağlar.Dataset birçok RecordSet'in birikmiş hali gibi düşünülebilinir.Herbir recordset Datatable olarak çağırılır.Bir DataTable'da join kullanılarak oluşturulmuş sorgulardan oluşabilir.Dataset bir datatable koleksiyonundan daha güçlüdür.Dataset içindeki tablolar içinde  ilişkiler ve sabitler tanımlayabiliriz.Dataset,Datatable ve Datarow ları biz  programsal olarak runtime'da da oluşturabilir eklemeler ve değişiklikler yapabiliriz.

Dataadapter ise Dataset ile Datasetimizi  aldığımız veri tabanı arasındaki veri iletişimini sağlarken kullanırız.DataAdapter'in en temel fonksiyonları aşağıdaki gibidir:

  • Veritabanından veri getirerek, Dataset oluşturmak 
  • Dataset'de yapılan değişiklikleri Veritabanında güncellemesini yapmak.

 

Dataset'i Doldurmak

DataAdapter'in Fill yöntemi ile dataset'e veriler aktarılır.Bir DataAdapter birçok tablonun Dataset'e aktarılmasında kullanılabilinir.

Dim dscmd as OleDbDataAdapter

Dim oDs as Dataset
dscmd=new OleDbDataAdapter("sql_select_cümlesi",oConn)

oDs=new DataSet()
dscmd.Fill(oDs,"data_table_name")
Dataset'in navigasyonu:
Dim oRow as DataRow
For each oRow in oDs.Tables("data_table_name").Rows

    oRow.Columns("alan1").toString()

Next

Datatable'a kayıt ekleme:

Dim oRow as DataRow
oRow=oDs.Tables("recordset_name_in_ds").NewRow()

oRow("alan1")="value1"

oRow("alan1")="value1"

.

.
oDs.Tables("recordset_name_in_ds").Rows.Add(oRow)

dscmd.Update(oDs,"data_table_name")

DataTable'daki kayıtları değiştirme:

Dim oRow as DataRow
'i herhangi bir rakam olabilir(kolon nosu tabiki)
oRow= oDs.Tables("data_table_name").Rows(i)

oRow("alan1")="value1"

oRow("alan1")="value1"

dscmd.update(oDs,"data_table_name")

DataTable'dan satir silme :

oDs.Tables("data_table_name").Rows(i).Delete

dscmd.update(oDs,"data_table_name")

Verilerin Filtrelenmesi:

DataTable nesnesinin select metodunu kullanarak istediğiniz kriterlere göre verilerin filtrelemeniz mümkün.

Dim oRows() as DataRow
oRows=oDs.Tables(0).Select("Kriterleri_belirtilmis_kritere_göre_arama_cümlesi")

Hataların Yakalanması:

Hataları yakalamanın birçok yolu vardır. try..catch en yaygın olanıdır.Çeşitli işlem aşamalarındaki hatalarıda biriktirebilecegimiz bir mekanizma ADO.Net tarafından sağlanır.

Dim oConn as OleDbConnection
Dim oCmd as OleDbDataAdapter
Dim oDs as Dataset
Dim errors as DataRow() 
oConn=new OleDbConnection("connection_string") 
oConn.open()
oDs=new dataset() 
oCmd=new OleDbDataAdapter("select_query",oConn)
oCmd.Fill(oDs,"data_table_name") 

oDs.Tables("data_table_name").Rows(0).RowError ="Herhangi bir hata msg" 

oDs.Tables("data_table_name").Rows(1).RowError = " baska bir hata msg" 

if oDs.tables("users").HasErrors then
	errors = oDs.tables("data_table_name").GetErrors()
	' do something with erroraneous rows
end if
Ayrıca RowError property'sindende veritabanından olan hatalar yakalanarak okunabilinir.

Transactionların yakalanması:

ADO.NET 'de OleDbTransaction nesnesi ile  transactionların kontrolu yapılabilir. 

Dim tran as OleDbTransaction
Dim oConn as OleDbConnection
oConn=new OleDbConnection("connection_string")
try 

      oConn.open() 
      tran=oConn.BeginTransaction() 
      oCmd=new OleDbCommand("some_sql",oConn) 
      oCmd.Transaction= tran 
      oCmd.ExecuteNonQuery() 
      oCmd.commandtext= "some_other_sql" 
      oCmd.ExecuteNonQuery() 

      tran.Commit() 

      catch myException as Exception 

      tran.Rollback() 

end try

 Yaralanılan Kaynaklar: