İlginizi Çekebilir
  1. Ana Sayfa
  2. ASP.Net
  3. AdoNet’e Giriş – Nedir? Ne Amaçla Kullanılır? Nasıl Yapılandırılır?

AdoNet’e Giriş – Nedir? Ne Amaçla Kullanılır? Nasıl Yapılandırılır?

Bu Makalemde ADO.NET teknolojisini anlatmaya çalışacağım.

Öncelikle tanımdan yola çıkarsak ADO.NET ( 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 imkânı 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. Bu sebeptendir ki , veri tabanı bağlantılı geliştirdiğimiz tüm uygulamamızda kullanmamız gereken en önemli teknolojidir ADO.NET.

ADO.NET ile ilgili kullanacağımız tüm class lar, Microsoft’un “using System.Data” adlı kütüphanesinde mevcuttur. Ve bizde tüm işlemlerimizde bu kütüphanemizden faydalanacağız.

ADO.NET ‘in veri tabanına 2 tür bağlantı şekli vardır.

Connected,

Disconnected

Bunları biraz açıklayalım.

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.

Kullandığımız Sınıflar:

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.  (SqlCommandOleDbCommandOdbcCommandOracleCommand) 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.

(, OleDbDataReader, , 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).

Kullandığımız Sınıflar:

: 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.

(SqlDataAdapterOleDbDataAdapterOdbcDataAdapter,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 bğalantı eçşitlerini ve çalışma prensibini daha iyi anlayabilmek içni aşağıdaki tablo bize yardımcı olacaktır.


Resim-1

Görüldüğü gibi ADO.NET teknolojisinde bir connection için 3 farklı yolumuz vardır.

DataAdapter, Command ve DataReader .

Bunlardan

Connected Bağlantılar     : Command ve DataReader

Disconnected Bağlantılar     : DataAdapter

ADO.NET teknolojisini kullanacak uygulama tarafımızda bir kısıtlama olmadığını görmekteyiz. Yani Windows Form uygulamalarında, Web Uygulamalarında ve diğer tüm Database bağlantısı gerektirecek uygulamalarda bu teknolojiden faydalanabilmekteyiz.

Burada önemli bi nokta da, aslında Disconnected Bağlantı modelinde bahsetmiştik, DataAdapter sınıfımız ile uygulamamız arasında DataSet gibi aracı bir sınıfımız daha vardır. Bu aracı sınıf ile beraber, disconnected bağlantılarımızı rahatlıkla uygulamalarımızda kullanabilmekteyiz.

Bu makalemde, ADO.NET teknolojisini anlatmaya çalıştım. Bununla alakalı yapılacak bir çok örnek ve anlatılacak bir sürü senaryomuz mevcuttur.

Fakat başarılı bir yazılımın gereği, önce konuyu anlamalıyız ki, uygulama sırasında başarılı bir ürün ortaya koyalım.

Bu sebeple, ADO.NET ‘e detaylı bir giriş yapmış bulunmaktayız. Umarım faydalı olmuştur.

Bir sonraki makalelerimde ADO.NET ile alakalı örnek uygulamalar ve senaryolar anlatıyor olacağım.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

Yorum Yap

Yazar Hakkında

1986 Aksaray Doğumluyum, Yıldız Teknik Üniversitesi Matematik bölümünden 2010 yılında mezun oldum ve yaklaşık 4 senedir IT sektöründe Yazılım ve Sistem uzmanı olarak çalışmaktayım. Bu süre içerisinde birçok Windows ve Web uygulamaları geliştirmiş olup, SQL Server konusunda oldukça tecrübeliyim. MCP, MCTC, MCPD, MCITP, MCSA ve CCNA sahip olduğum sertifikalardır.

Yorum Yap

Yorumlar (6)

  1. Ellerine sağlık hocam güzel anlatım olmuş

  2. 7 sene önce

    Güzel anlatım olmuş

  3. 7 sene önce

    Teşekkürler 🙂

  4. 6 sene önce

    güzel bir anlatım olmuş ellerinize sağlık 🙂