Üye Ol | Bağlan
ANASAYFA | VERİTABANI | PROGRAMLAMA | HAKKIMIZDA | BLOG | ETKİNLİKLER | KAYNAKLAR
Yazı Hakkında
  Seviye:
Yazar:Süleyman SALIN
Okunma: 6783
Oylanma:122 kişi (5,39/10)
 
 
Tavsiye Et
Yazıcı Dostu
Evrak Çantama Al
 
KATEGORİLER
  VERİTABANI
    ORACLE
    HIZLI SQL KURSU-1
    SQL SERVER 2005
    SQL SERVER 2000
PROGRAMLAMA
    JAVA
    ADO.NET
    MOBİL PROGRAMLAMA
    ASP.NET
    VB.NET
    C# ve C#.NET
İŞARETLEME DİLLERİ
    HIZLI WEB PR. KURSU
    XML
HABERLER
EĞİTİM & SERTİFİKA
KİTAP
SÖYLEŞİ
HAKKIMIZDA
BLOG
ETKİNLİKLER
 
  XHTML,CSS,VBScript,ASP SQL Lab 2.0 Beta
Hızlı SQL Kursu(Yeni)
 
 
Son Eklenenler
 
SQL SERVER 2005
COALESCE Fonksiyonu ile Dinamik Where Şartları Hazırlamak

Transact SQL’de SQL Server 2008 Yenilikleri-1

SQL Server’da verileri Türkçe Karaktere Dönüştürmek

StrToCursor Prosedürü ile Hızlı ve Kolay Cursor Açmak

Triggerı Hangi Olayın Tetiklediğini Tespit Etmek

İleri Cursor Açma Tekniği

Yazılımcılar için SQL Server Erişim Güvenliği

JAVA
Java'ya GiriŞ - 3 : JCreator Editörü

HABERLER
Verivizyon.com Topluluk Kurucusuna MVP Ödülü

Verivizyon yeni sunucularında

 
Bu Bölümden
Hızlı ADO.NET Kursu(8596 yükleme)
ADO.NET Giriş(6783 yükleme)
 
 
E-LİSTE
BT ve özellikle Veritabanı ile ilgili haber, yenilik ve etkinlikler hakkında önceden haber almak için bize e-mail adresinizi bırakabilirsiniz.

ANKET
SQL Server 2008'e geçtiniz mi?
Sorunsuz Geçtik
2005'e yeni geçtik
2000 bize yetiyor.
 

 


ADO.NET Giriş


Bu makalede ve bunu takip eden makalerde framework kütüphanesinin önemli bir parçası
olan ve veri kaynaklarından (veritabanları, access excel dosyaları, text dosyaları)
bilgi okuma ve veri kaynaklarına bilgi yazımı için kullanılan ADO.NET kütüphanesinden
bahsedeceğim.

Giriş

Günümüzde bir çok web uygulaması verilerini arka planda veri kaynaklarında saklamaktadır. Ziyaretçi bir sayfayı görmek istediğinde öncelikle veri kaynağından ziyaretçinin istediği bilgiler okunur ve sayfada bu bilgiler kullanıcıya gösterilir. Aslına veri kaynağından bilgi gösterme web uygulamaları veya ADO.NET ile gelen bir yenilik değildir, bu tip uygulamalar oldukça eskiye dayanmaktadır. İlk uygulamaların yazıldığı 60'lardan itibaren yazılmış çoğu uygulamada en az bir adet veri kaynağı kullanıldığını görebiliriz.

Veri kaynaklarında veri tutmanın avantajı adından da anlaşılacağı gibi uygulamayı kullanan firma için çok değerli olan bilgilerin bir kaynakta uzun zaman saklanabilmesidir. Hatta veri kaynağı olarak ileri seviye veritabanı sunucuları kullanarak verilerin kaybolması ihtimali sıfıra yakın olabilmektedir.


Ne yazıkki sıfır veri kaybı ihtimali yoktur. En güvenli sistemlerde bile veri kaybolma olasılığı vardır

Veri kaynaklarında veri tutmanın diğer bir avantajı; veri ve uygulama katmanı ayrı olduğu için verilerin başka uygulamalar da kullanabilmesidir (Reusability). Ayrıca ilişkisel veritabanların özelliği olan triggers , stored procedure ve relations'larla kod ile yazması oldukça zahmetli olan bazı işlemler veritananı katmanında yapıldığı için yazılan kod miktarı oldukça azalmaktadır. Bu uygulamanın bakım işini kolaylaştırmaktadır.

Veri Kaynağından Veri Gösterimi Hayat Döngüsü

Veri kaynağından veri gösterme 3 aşamadan oluşur. Bu 3 aşama genellikle tüm programlama dillerinde bulunur. Bu üç aşama;

  1. aşamada veri kaynağına bağlantı yapılır. Veri kaynağını bir banka ve uygulamayı bankanın müşterisi olarak düşünürsek, bağlantı yapılması müşterinin bankanın adresini bulup bankaya gitmesi, görevliye kendini tanıtıcı belgeleri göstermesi (hesap cüzdanı, nufus cüzdanı gibi ) ve görevlinin gelen kişinin müşteri olarak kabul etmesine kadar olan aşamalar olarak düşünebiliriz.
    Bu aşamada olabilecek hatalar, kişinin gittiği adreste bankanın bulunmaması ( yanlış bağlantı yolu verilmesi) veya kişinin banka müşterisi olmamasıdır. (veri kaynağının kullanıcı adı ve şifresinin yanlış yazılması).
  2. aşama olarak veri kaynağına sorgu cümleleri gönderilir. Banka ve müşteri örneğinden devam edersek sorgu göndermek banka görevlisine yapmak istediğimiz işlemleri söylemektir.
    Bankada yapılan bazı işlemlerde - havale yapmak veya para yatırmak gibi- müşteriye sadece işlemin yapıldığını belirten bir belge döndürülür. Bazı işlemlerde ise - para çekmek gibi- müşteriye belgenin yanında para gibi bazı nesneler verilir.
    Veri kaynakları ile yapılan işlemlerde de durum oldukça benzerdir. Bazi işlemlerde - veri yazma, silme, güncelleme- uygulamaya sadece işlemin başarıyla yapılıp yapılmadığı bilgisi döndürülür. Bunun yanında bazı işlemler -veri okuma gibi- uygulamaya istenen verileride döndürür.
    Bu aşamada karşılaşabilinecek hatalar, müşterinin hatalı bir işlem yapmak istemesi durumu (hesabında olan paradan daha fazla para çekmek istemesi gibi) veya müşterinin yapmak istediği işlemi yanlış belirtmesidir (havale yapacağı hesap numarasını yanlış belirtmesi gibi). Aynı şekilde veri kaynağından da benzer sebeplerden dolayı hatalar gelebilir.
  3. ve son aşama veri kaynağından alınan bilgilerin teker teker okunup uygulamada kullanıcıya gösterilmesidir. Banka örneğinden devam edersek alınan paranın harcanması olarak düşünülebilinir. Veri kaynağından veri gelmediği durumlarda ise genellikle kullanıcıya isleminiz başarıyla tamamlanmıştır gibi bir mesaj verilir.

ADO.NET Nedir?

ADO.NET Microsoft tarafından geliştirilen ve bir veri kaynağı ile iletişimi sağlayan kütüphanedir. Az önce bahsedildiği gibi veri kaynağı bağlantısı üç aşamadan oluşmaktadır. ADO.NET içerisinde bulunan veri sağlayıcılarında bulunan sınıf ve metodlar, bu üç aşamayı yerine getirmek için kullanılır.


DİKKAT:

ADO.NET sınıflarının başında "ADO" gibi bir belirteç yazılmadığından ilk defa veri tabanı programı yapan geliştiriciler ADO.NET kütüphanesini hiç kullanmadığını sadece ASP.NET kütüphanesi kullandığını düşünebilirler. Fakat bu çok büyük ihtimalle yanlış bir düşüncedir ve uygulamada kullanılan veri tabanı bağlantısı yapan veya sorgu göndermeye yarıyan sınıflar ADO.NET'e ait sınıflardır.


ADO.NET 'in getirmeye çalıştığı; tüm veri kaynaklarına standart bir yöntemle başlanmaktır. Yani veri kaynağı oracle, mssql gibi veri tabanları olsun veya düz metin dosyası olsun, ADO.NET benzer yollarla farklı veri kaynaklarında benzer işlemleri yapmaya olanak sağlar. Bu işlem birazdan anlatılacak olan data provider'lar ile sağlanmaktadır.

Kısa Bir Tarihçe

Aslında veri kaynaklarına ulaşımı standartlaştırma çalışmalarının 20 yıla yakın bir geçmişi vardır. Önceden her bir veri kaynağı için birbirinden alakasız sınıf ve metodları kullanmak gerekliydi. Standartlaşma adına ilk adım ODBC (Open Database Connectivity) ile getirildi. ODBC, veri kaynaklarına ulaşmak için geliştirilen ortak bir dildir ve ilk olmasının avantajını kullanarak şu ana kadar bir çok uygulamada kullanıldı ve bir çok veritabanı odbc uyumlu kütüphanelerini yazdı.

ODBC'nin dezavantajı oldukça alt seviye bir standart olmasıydı. Daha kolay bir standart oluşturmak için Microsoft OLE DB standartını getirdi. OLE DB kullanması daha kolay bir standarttır. Günümüzde bir çok veritabanı firması OLE DB standartında yazılmış kütüphanelerini piyasaya sürmüştür.

Yeni standartlar çıktıkça bu standartları kullanan ortak standart yeni kütüphaneler geliştirme gereği duyuldu. Bunun için Microsoft ilk önce UDA (Universal Data Access) kütüphanesini geliştirdi. Bunun ardından ADO kütüphanesini geliştirdi. ADO kütüphanesi ASP 'de kullanılmak için geliştirilen bir kütüphanedir. Son olarak Microsoft ADO'yu oldukça geliştirerek ADO.NET kütüphanesini .NET framework ile çıkardı.

ADO.NET ile veri tabanına ister ODBC ile başlanılsın , ister OLE DB ile başlanılsın veya istenirse Oracle veya MSSQL'de olduğu gibi kendi veritabanı bağlantı kütüphaneleri kullanılsın, aynı standart metodlar ve sınıflar ile veri kaynağına veri işlenir veya kaynaktan okunur.

Data Providers ( Veri Sağlayıcıları)

Önceden bahsedildiği gibi hangi veri tabanı olursa olsun, veri kaynağı ile yapılan işlemler 3 aşamadan oluşuyor. Bunlar bağlantı açma, sorgu gönderme ve sorgu sonucunu işlemedir. ADO.NET'te bulunan her bir data provider'da bu üç aşama için hazırlanan standart sınıf ve metodlar vardır.

Örnek olarak ODBC veri sağlayıcısında, veri tabanı bağlantısı yapan System.Data.Odbc.OdbcConnection sınıfı bulunur. Aynı zamanda OLE DB data provider'ında, veri tabanı bağlantısı yapan System.Data.OleDb.OleDbConnection sınıfı vardır. ADO.NET 'te tüm işlemler standart metod isimleriyle yapıldığından, her 2 sınıfın bağlantı açan Open() metodu ve bağlantı kapatan Close() metodları vardır.

Hazır Data Providerlar ( Veri Sağlayıcıları)

Microsoft .NET framework kütüphanesinde hazır olarak gelen 5 adet veri sağlayıcısı vardır. Her bir data provider bir adet name space (ad alanı) ve onun içerisindeki sınıflar ile belirlenir. ADO.NET'te hazır olarak gelen data provider'lar.

Veri Sağlayıcı Adı Açıklama Desteklenen Bazı Veritabanları
System.Data.Odbc ODBC desteği olan veritabanlarına bu veri sağlayıcı ile bağlanabilinir.
  • DB2
  • My Sql
  • Paradox
  • Access
  • Excel
System.Data.OleDb OLEBD desteği olan veritabanlarına bu veri sağlayıcı ile bağlanabilinir.
  • Interbase
  • Access
  • MS Sql server
  • Oracle
System.Data.OracleClient Sadece Oracle veritabanına başlanmak için Microsoft tarafından çıkarılan veri sağlayıcı.
  • Oracle
System.Data.SqlClient Sql server'a (SQL Server CE hariç tüm versiyonlar) başlanmak için geliştirilen veri sağlayıcı.
  • MS SQL Server
System.Data.SqlServerCe SQL Server CE'ye (mobil araçlar için geliştirilen Sql Server sürümü) başlanmak için geliştirilen veri sağlayıcı.
  • SQL Server CE
Tablo 1: ADO.NET'te hazır olarak gelen veri sağlayıcıları.

Veri sağlayıcılarını sadece bir veri kaynağı için yapılan özel veri sağlayıcıları ve bir çok veri kaynağına hitap eden genel veri sağlayıcıları olarak 2'ye ayrılır. Özel veri sağlayıcıları sadece belli bir veritabanı için optimize olarak geliştirildiğinden genellere göre oldukça hızlıdır. Bu yüzden öncelikle -e?er varsa- kullanacağımız veri kaynağının özel veri sağlayıcısını araştırmamız gerekir, eğer yoksa kullanacağımız veri kaynağının OLE DB veya ODBC desteklediğini araştırıp bunlara ait genel veri kaynaklarını (System.Data.OleDb, System.Data.Odbc) kullanmamız gerekir.


İPUCU:

ADO.NET içerisinde bulunan 5 adet veri sağlayıcının yanynda isteyen kendi veri sağlayınıcı yazabilir. Bazı firmalar ( Oracle gibi) ADO.NET için kendi veri sağlayıcılarını yazmıştır. Bunun için yapılması gereken bazı ADO.NET interface sınıflarının (IConnection, ICommand gibi) türetip, bu interface sınıflarında bulunan metodları istediğimiz veri tabanına özel olarak geliştirmektir. Tüm veri sağlayıcıların sınıfları IConnection, ICommand gibi standart interface sınıflarından türetildiği için, bu sınıflardaki metod isimleri hep aynıdır.


DİKKAT:

Her ne kadar Microsoft tarafından Oracle için yazılmış veri sağlayıcısı var ise de Oracle geliştiricilere kendi veri sağlayıcısını ( Oracle Data Access Component) kullanmasını tavsiye ediyor. Oracle'ın kendi veri sağlayıcısı ADO.NET içerisinde hazır olarak bulunmuyor. Oracle'ın sitesinden indirilip projelere gerekli ddl dosyalarının referans olarak eklenmesi gerekmektedir.


Veri Sağlayıcılarında Bulunan Ortak Sınıflar

Daha önce bahsedildiği gibi veri kaynağı ile yapılan işlemler 3 adımdan oluşmaktadır. 1. aşama olarak veri kaynağıyla bağlantı yapılır, 2. aşamada veri kaynağına sorgu gönderilir ve son aşamada veri kaynağından gelen bilgiler okunur. Tüm veri sağlayıcılarında bu üç aşama için sınıflar vardır. Bu sınıflardan;

Connection sınıfı 1. aşama için kullanılır. Bu sınıf ile veri kaynağına bağlantı yapılır.

Command sınıfı 2. aşama için kullanılır. Bu sınıf ile veri kaynağına sorgu cümleleri gönderilir. Sorgu cümleleri parametre alabilirler, bu parametreler Parameter sınıflarıyla eklenir.

DataReader sınıfı 3. aşama için kullanılır. Sorgudan dönen sonuç satır satır bu sınıf sayesinde okunur.

DataAdapter sınıfı da 3. aşama için kullanılır. Bu sınıfın DataReader'dan farkı bu sınıftan dönen veriler satır satır okunmaz, onun yerine veriler DataSet adında bir sınıfa konulur. DataSet sınıfından istenilen zamanda veriler okunabilinir. DataSet sınıfı veri sağlayıcılarının bir sınıfı değildir. Verileri sunucu hafızasında tutmak için kullanılır. DataSet nesnesi diğer makalelerde detaylı şekilde anlatılacaktır.

Exception sınıfları veri sağlayıcısı sınıflarında yapılan işlemlerde bir hata olduğunda veri sağlayıcısı tarafından fırlatılır.

Bu ortak sınıflar tüm veri sağlayıcı ad alanlarında bulunur. Genellikle isimlerinin başında veri sağlayıcısının adı bulunur.

Veri Sağlayıcı Connection Sınıfı Command Sınıfı DataReader Sınıfı DataAdapter Sınıfı
System. Data. Odbc OdbcConnection OdbcCommand OdbcDataReader OdbcData Adapter
System. Data. OleDb OleDbConnection OleDbCommand OleDbDataReader OleDbData Adapter
System. Data. OracleClient OracleConnection OracleCommand OracleDataReader OracleData Adapter
System. Data. SqlClient SqlConnection SqlCommand SqlDataReader SqlData Adapter
System. Data. SqlServerCe SqlCeConnection SqlCeCommand SqlCeDataReader SqlCeData Adapter
Tablo 2: Veri sağlayıcılarının ortak sınıfları.

Data Source Kontrolleri

Data Source kontrolleri ADO.NET 2.0 ile beraber gelmiştir.Data Source kontrollerinin özelliği, veri kaynağından bilgi göstermek için gerekli 3. aşamayı kendi içerisinde yapmasıdır. Yani Data Source kontrolü kendi içerisinde veri tabanına başlantı yapar, veri tabanına sorgu gönderir ve sorgudan gelen sonucu Data Set'e veya DataReader sınıfına aktarır.

Data Source kontrollerinin amacı geliştiricileri "syfyr-kod" 'a yakınlaştırmaktır. Sıfır-kod Microsoft'un uygulamaları en az kod ile geliştiricilere yazdırmaya çalışmasıdır. Data Source kontrolleriyle daha önceden 3-5 satır kod ile yapılan işlemler, 1 satırda yapılabilmektedir.

Data Source kontrolleri , veri sağlayıcılarla karıştırmamak gerekir. Data Source kontrolleri aslında kendi içerisinde veri sağlayıcıları kullanır. Veri sağlayıcıların içerisindeki Connection, command ve diğer sınıfları kullanır fakat bu işlemler uygulama geliştirici tarafından görülmez. Ayrıca data source kontrollerine öğrenip veri sağlayıcıları öğrenmemek ileride sıkıntı yaratabilir.

Sonuç

Bu makalemizde ADO.NET kütüphanesine giriş yaptık. ilerideki makalelerde veri sağlayıcılarını örneklerle daha detaylı olarak göreceğiz.

Referanslar

  1. MSDN
  2. MCTS Self-Paced Training Kit (Exam 70-536): Microsoft .NET Framework 2.0 Application Development Foundation,Tony Northrup, Shawn Wildermuth and Bill Ryan,Microsoft Press 2006
  3. ASP.NET 2.0 Unleashed,Stephen Walther,Sams 2006 2006
  4. Beginning ASP.NET 2.0 Databases From Novice to Professional,Damien Foggon,Apress 2006
[31.05.2007]

Oy Ver: Kötü 1  2  3  4  5  6  7  8  9  10  İyi


YORUMLAR

Çok güzel bir anlatım
Ellerine sağlık anlatım dilin çok güzel. İzninle bende bir ekleme yapmak isterim. Eğer Sql servera bağlantı kuracak isek SQL Server 7.0 ve üstünde System.Data.SqlClien, SQL Server 6.5 ve daha öncesi sürümlerinde ise System.Data.OleDb bağlantı nesnesini kullanmamız gerekir.
ervolkan 14.06.2007 09:02:00

Tebrik
sade ve net bir anlatim.tebrik ederim.tek eksik yonu orneklerle desteklenmemis olmasidir.belki de baska bir yazinin konusus...
ademer 24.11.2007 19:06:00

YORUMUNUZ
Kullanıcı :
Başlık :
İçerik:
Lütfen Giriş Yapınız

Süleyman SALIN
1982 Balıkesir / Edremit doğumlu. 2005 Bilkent Üniversitesi Bilgisayar Mühendisliği bölümü Mezunu. 2002 yılından bu yana bir çok kurum ve şirkette ASP.NET ile veritabanı uygulamaları geliştirdi. Halen ÖDTÜ Bilgisayar Mühendisliği yüksek lisans programına devam ediyor. İlgilendiği konular Oracle veritabanı, Solaris işletim sistemi, ASP.NET, C# ve Java programlama dilleridir. Oracle OCP (Oracle Certified Professional) sahibidir.
Web Adresi: http://blogs.verivizyon.com/saleymin/Default.aspx
Yazara Ait Son Eklenen Makaleler
ADO.NET Giriş(31.05.2007)
ASP.NET'e Data Bağlama (Data Binding)(24.03.2007)
İşletim Sistemi Hareketlerini C# ile İzleme(18.02.2007)
C# ile E-Posta Gönderimi(17.02.2007)
ASP.NET 2.0'da Çoklu Dil Desteği (Localization) - II(02.10.2006)
ASP.NET 2.0'da Çoklu Dil Desteği (Localization) - I(30.09.2006)
ASP.NET 2.0'da Theme ve Skin(27.08.2006)
ASP.NET'de ViewState(20.08.2006)
ASP.NET'de PostBack(20.08.2006)
IIS'den ASPX'e Giden Yol(13.08.2006)
 

© 2003 - 2005 Verivizyon.com 'Developer Academy'. Tüm hakları saklıdır. Kullanım Sözleşmesi | Gizlilik İlkeleri | İletişim