ADO.NET nedir? – Web Tasarım & Programlama
C# • Programlama • SQL
ADO.NET (ActiveX Data Objects.NET) , AktiveX tabanlı çalışan, Microsoft’un veri erişim teknolojisidir.
Bu veri erişim, sadece SQL Database bağlantısı değildir, Oracle, mySql, Access ve tüm office araçları olmak üzere tüm ver tiplerine erişim imkanı sunmaktadır.
ADO.NET, geliştireceğimiz uygulamamız ile Database arasında tam bir Köprü görevi görür. Verileri okuyabilir, update edebiliriz. SQL sorguları ve procedure leri çalıştırtabiliriz.
ADO.NET ile ilgili kullanacağımız tüm class lar, Microsoft’un “using System.Data” adlı kütüphanesinde mevcuttur.
ADO.NET ‘in veri tabanına 2 tür bağlantı şekli vardır.
Connected (Bağlantılı), Disconnected (Bağlantısız)
Connected Bağlantı Şekli:
Bu bağlantı şeklimizde, Uygulamamız, database ile sürekli bağlantılı haldedir ve anlık database de okuma ve update işlemlerimiz yapılmaktadır.
Bağlantı sürekli olduğu için, veri okuma işlemi son satırı okuyana kadar açık kalması gerekmektedir, bu da uygulamamızda biraz yavaşlığa sebep olabilir.
Örnek vercek olursak: Mesela, sql de bir tablomuzda satır satır dönme işlemlerimiz, yada direk bir sorgu yada procedure komutlarımız Connected bağlantı şekline girmektedir.
Command : Sorgularımızı yada Procedure lerimizi çalıştırmamıza yarayan sınıftır. Database çeşidine göre farklılık gösterir. (SqlCommand, OleDbCommand, OdbcCommand, OracleCommand) gibi.
DataReader : Sorgu sonucumuzda elde ettiğimiz veride , satır satır dönmemize yarayan sınıftır. Database çeşidine göre farklılık gösterir.
(SqlDataReader, OleDbDataReader, OdbcDataReader, OracleDataReader) gibi.
Disconnected Bağlantı Şekli:
Bu bağlantı şeklimizde, Uygulamamız, veri tabanını kullanmak için sürekli ona müracaat etmek yerine, veri tabanının bir kopyasını RAM üzerine alır ve bundan sonraki tüm işlemlerini RAM deki veri üzerinde yapar.
RAM ‘e alınan veri üzerinde, insert, update ve delete işlemleri kolaylıkla yapılır ve bu işlem için database ‘e kadar gitmemize gerek yoktur. Fakat anlaşılacağı gibi yaptığımız değişiklikler RAM ‘deki veri üzerinde olmaktadır. Gerçek database deki değişiklik için ayrıca bir işlem gerektirir.
Bu bağlantı şeklinin en önemli avantajı performanstır. Çünkü bilmemiz gereken en önemli şeylerden biri, veri tabanına bağlantı framework açısından her zaman zahmetli bir iştir ve bize yavaşlık getirir. Bu modelde, veri tabanına 1 kere bağlanılmakta ve istediğimiz veriyi RAM e aldıktan sonra bir daha database ‘e gitmemize gerek kalmamaktadır.
Dezavantajı ise, Gerçek database deki verilerin güncellenmesi geç yapıldığı için, zaman zaman veri uyuşmazlığı ve tutarsızlığı yaşanmaktadır.
Bu bağlantı şekline örnek olarak: Sahada kullanılan bir çok el terminalleri bu mantıkla çalışmaktadır. El terminallerine sabah veriler yüklenir (RAM e yükleme aşaması) , ve gün boyunca cihazlar ile bigli girişleri yapılmaktadır. Bunların hepsi cihazdakiş RAM de tutulur, ve gün sonunda cihazlar internete bağlandıktan sonra gerçek database ile Senkronizasyon işlemi yapılır. Yani database ‘e sadece 2 defa gidilir. Buda bize performans sağlamaktadır. ( günümüzde artık 3G teknolojisi olduğu için, bir çok terminallerde internet bağlantısı olduğu için Connected bağlantı şeklinin kullanıldığı durumlarda vardır).
DataAdapter: Gönderdiğimiz sorgu sonucu gelen veriyi geçici hafızaya alan sınıfımızdır. Database çeşidine göre farklılık gösterir.
(SqlDataAdapter, OleDbDataAdapter, OdbcDataAdapter,OracleDataAdapter) gibi.
DataAdapter ile database den verimizi çekeriz, fakat alınan veriyi kullanabilmemiz için DataTable ve DataSet gibi veri türüne dönüştürmemiz gerekmektedir.
Connected ve Disconnected bağlantı çeşitlerini ve çalışma prensibini daha iyi anlayabilmek için aşağıdaki tablo bize yardımcı olacaktır.
Görüldüğü gibi ADO.NET teknolojisinde bir connection için 3 farklı yolumuz vardır.
DataAdapter, Command ve DataReader .
Connected Bağlantılar : Command ve DataReader
Disconnected Bağlantılar : DataAdapter
ADO.NET teknolojisini Windows Form uygulamalarında, Web Uygulamalarında ve diğer tüm Database bağlantısı gerektirecek uygulamalarda kullanabiliriz.
C# SQL Veritabanı Bağlantısı ile Doğum Günü Bugün...
C# ile Cümle İçinde Palindromik Kelime ve Sayıları...