ADO.NET 1

ADO.NET - 1 -

ADO.NETEski Ado’yu pek bilmem fakat biraz araştırdım ve Ado.Net ile arasındaki farklardan bahsederek gireceğim yazıya.Ben Ado zamanında programlamaya başlamadığım için Ado’dan bahsederken mış’lı miş’lı yazıcam.Ado zamanında veritabanı üzerindeki bütün işlemler online (çevrimiçi) olarak yapılmaktaymış ve bunun bize en büyük dezavantajlarından birisi performans kaybıymış. Fakat artık Ado.Net var. Ado.Net’in en büyük avantajlarından birisi bize offline olarak çalışma ortamı sağlamasıdır. Bunu biraz açacak olursak veritabanımıza bağlanıp aldığımız verileri DataSet nesnemiz içerisine doldurduktan sonra veritabanı ile olan bağlantımızı kesip işlemlerimizi (veri ekleme, sorgulama, veri silme, veri değiştirme işlemleri) aynen veritabanımıza bağlıymış gibi gerçekleştirebiliriz. Bu durum bize sanki kendi makinamızda işlem yapıyormuşuz gibi bir ortam sağlar. Çünkü bizim DataSet nesnemiz bizim makinamız üzerinde kendisine bizim belleğimiz üzerinden bir alan ayırıp işlemleri kendi makinamız üzerinde bize DataSet nesnemizin bizim için ayırmış olduğu bellek üzerinde yapmamızı sağlar.Ado.Net’in güzelliklerinden birisinden daha bahsetmek gerekirse bu da XML yapısını desteklemesidir. Ado.Net verileri XML tipine dönüştürüp bunları HTTP protokolü üzerinden sağladığı için bunu yaparken firewall kısıtlamaları da bulunmuyor.ADO.NET Nesne ModeliAdo.Net’in bütün yapıları System.Data.dll isimli kütüphane içerisinde tanımlanmıştır. Yani Ado.Net yapılarını kullanabilmemiz için isim alanlarımızda using anahtar sözcüğümüzden sonra System.Data isim alanımızın varlığını kontrol etmemiz gerekir.System.Data’nın alt yapılarından ikisi olan SqlClient ve SqlTypes SQL Server kullananlar için optimize edilmiş isim alanlarıdır.System.Data.SqlClient : SQL Server veritabanımıza direk olarak bağlanıp performansınızı yüksek tutmak istiyorsanız bu işlem için Microsoft’un özel olarak optimize etmiş olduğu SqlClient isim alanının faydalarından mutlaka yararlanmak en iyi çözüm olacaktır.Bu kadar bilgi sanırım şimdilik yeterlidir. Artık biraz uygulamaya geçelim.ADO.NET ile Veritabanına BağlanmaŞimdi sadece veritabanına bağlanan ufak bir programcık yapacağız. Programcığımızın özelliklerinden bahsetmek gerekirse ; veritabanına bağlanmaya çalışacak, bağlantı sağlanırsa bir label üzerine “Bağlantı Başarılı :)” yazacak eğer bağlantı sağlanamazsa aynı label’ın değerini bu sefer “Bağlandı Başarısız :(“ yapacak ve bize hatanın nereden kaynaklandığını bir MessageBox içerisinde gösterecek. Şimdi formumuzun dizaynını şu şekilde yapalım :

Formumuzun dizaynında gördüğünüz gibi bir tane Buton ve bir tane de label bulunmakta. Şimdi text özelliğine “Bağlan” değerini atadığımız butonumuza çift tıklayarak butonumuzun tıklandığı anda yapacağı işlemlerin kodlarını yazmaya başlayalım.Tabii ki butonumuzun Click olayına kodlarımızı yazmaya başlamadan önce isimalanları arasına System.Data.SqlClient isim alanımızı eklemeyi unutmuyoruz.Zaten biz eklemediğimizde SqlClient isimalanının içerisindeki bir nesneyi kullanmak istediğimizde Visual Studio bizim için uyarı verip eklemeyi yapmamızı sadece bir tıklama ile yapmamızı sağlar.

İsim alanımızı da ekledikten sonra butonumuzun Click olayına kodlarımızı yazmaya başlayabiliriz. Kodları hemen yazıp yazının devamında da kodların açıklamasını yapmak daha uygun olur diye düşündüm.------------------------------------------------------------------------------private void button1_Click(object sender, EventArgs e){SqlConnection con = new SqlConnection("Data Source = localhost; Initial Catalog = Northwind;Integrated Security = SSPI;");try{con.Open();label1.Text = "Bağlantı Başarılı :)";}catch (Exception exp){label1.Text = "Bağlantı Başarısız :(";MessageBox.Show(exp.ToString());}con.Close();}------------------------------------------------------------------------------Kod bloğumuz bu kadar. Çalıştırdığımız zaman aşağıdaki şekilde olacaktır :

Sıra açıklamaya geldi.İlk satırımızdaki SqlConnection con = new SqlConnection("Data Source = localhost; Initial Catalog = Northwind;Integrated Security = true;"); komutu ile bir adet veri kaynağı olarak local makinamızı gösteren, bağlanacağı veritabanının adı Northwind olan (SQL Server ile birlikte standart olarak geldiği için Northwind kullandım) ve Entegre Bağlantı Güvenliğinin güvenilir olduğunu belirten bir bağlantı nesnesi oluşturduk.İkinci satırda try ve catch bloklarını görmektesiniz bunları ilerleyen yazılarımda daha ayrıntılı olarak anlatacağım fakat genel olarak bahsetmem gerekirse ; try bloğunun içerisine yazdıklarımız gerçekleşmeyip bir hata gerçekleşirse direk olarak hatadan sonra catch bloğumuz içerisinde yazanlar işleme konulur.con.Open(); komutu ile bağlantımızın açılmasını sağladık. Eğer bağlantı açılırsa hala try bloğumuzun içerisinde olacağımız için con.Open(); satırından sonra label1’e “Bağlantı Başarılı :)” değerimiz atanır.Fakat try bloğumuz içerisinde con.Open(); satırına gelindiğinde veritabanı ismi veya veri kaynağımız geçerli değilse direk olarak catch bloğumuza atlayarak ilk yapacağı işlem label1’imizin değerini “Bağlantı Başarısız :(“ olarak atadıktan sonra ekrana MessageBox içerisinde hatamızı yazacaktır. Yukarıda verdiğim kodda bağlantı sağlanacağı için hiçbir sorun olmayacaktır. Bir de hata verdirelim. Hata olması için SqlConnection nesnemiz üzerindeki verilerden birisini yanlış girelim. Mesela veritabanı adını “Northwind” yerine “Northnd” yapalım bakalım ne olacak ? Programı çalıştırıp Bağlan butonuna tıkladığımız zaman aşağıdaki görüntü ile karşılaşırız :

Evet arkadaşlar MessageBox’umuza yazdırılan hatanın ilk satırına baktığımızda “Cannot open database requested in login ‘Northnd’. Login fails.” yazıyor. Hatamızda “Northnd” isimli veritabanının açılamadığı belirtiliyor.Şu ana kadar bir Sql Server sunucusuna en basit şekilde bağlanmayı ve bağlanılamadığı taktirde olası bir hatanın nasıl tespit edileceğinden bahsetmiş olduk. Bir sonraki yazımda görüşmek üzere.

Örnek program : http://aspspider.info/Dogukan/AdoExample1.rarDoğukan DEMİR

Döküman Arama

Başlık :

Kapat