ADO.NET'e giriş (yeni başlayanlara)

nonafraid

New member
Katılım
29 Tem 2005
Mesajlar
11
Reaction score
0
Puanları
0
Yaş
44
Konum
İstanbul
Bu yazıda hazırda var olan veritabanımızla (Access-MSSQL vs.) bağlantı kurup değerlerimizi bu veritabanından almayı inceleyeceğiz.

Bağlantısız katmanla şu ana kadar çalışmış olanlar eminim biliyordur, ancak yeni başlayanlar için bir hatırlatma yapmak istiyorum. Bu makalemizde inceleyeceğimiz bağlantılı katmanla, sadece veritabanından verileri alacağız daha sonra bu bağlantılı katmanı kapatıp, tüm işlemlerimizi bağlantısız katmanda gerçekleştireceğiz. Yani ADO.NET in getirmiş olduğu en iyi özelliklerden biri olan bağlantısız katmanı da kullanmadan geçmeyeceğiz. Bu şekilde uygulamalarımızın hızı 3-4 kat daha performanslı olacaktır.

ASP ve ADO kullananlar çok iyi bilirler, bağlantıyı sayfamızın başında açıp bir çok işlem gerçekleştirirdik. Doğal olarak sayfanın en başından sonuna kadar geçeen yükleme süresince bağlantı açık dururdu. Artık bağlantımızı sayfa yüklenirken bir kere açıp, tüm verileri alıyoruz ve hemen ardından bağlantımızı kapatıyoruz. Bundan sonrada veritabanı işlemlerimizi bağlantısız katman üzerinde gerçekleştiriyoruz. Sanırım bu fark performans açısından ne denli bir fark gösterdiğini açıklamak için yeterli olacaktır.



Managed Provider :

Managed Provider en basit haliyle anlatmak gerekirse, istenilen(access, mssql, mysql) veritabanına bağlantı kurmak için gerekli olan, Microsoft tarafından yazılmış, hali hazırda bulunan nesne yönemli programlama tekniğine göre yazılmış bir sınıf kütüphanesidir.

ADO.NET de default olarak 2 adet Managed Provider vardır.

Bunlardan ilki SQL Server .Net Data Provider; tahmin etmiş olduğunuz gibi SQL Server 7.0 veya daha üstü veritabanlarına bağlanmak için kullanılır. Microsoft'un bir ürünü olan ADO.NET, tabiki yine kendi ürünü olan SQL Server a tam destek sağlıyor. Üstelik performans olarakda diğer veritabanlarına göre çok daha iyi bir performans kazandırıyor. Eh bunun olmasıda biraz normal değilmi :)

Bu işlemleri yapabilmeniz için sayfanıza System.Data.SqlClient namespaceini eklemeniz gerekmektedir.

Diğer biri ise OleDB .Net Data Provider. SQL Server haricindeki diğer veritabanlarına bağlanmak için bu providerı kullanmaktayız. En genel kullanımda bulunan Access dosyalarına veya Oracle veritabanlarına bağlanmak için bu provider kullanılır.

Bu işlemleri yapabilmeniz için sayfanıza System.Data.OleDb namespaceini eklemeniz gerekmektedir.

Yazımızın bundan sonraki bölümünde Access veritabanına göre işlemler yapacağız. Bunun için OleDB .NET Data Providerın kullanacağız. Ancak SQL Servere sahip olanlar verilen kodlardaki oledb ler yerine sql yazdıkları taktirde tüm işlemleri gerçekleşecektir. Tabiki sayfanıza ekleyeceğiniz namespace i de değiştirmeniz gerekecektir.
(Örn : OleDbConnection yerine SqlConnection yazılmalı...)



OleDbConnection Sınıfı :

Bu sınıf sayesinde, veritabanına bağlantı kurmamız için gerekli olan bağlantı cümlemizi belirtiyoruz. Aşağıda Access veritabanı için bir bağlantı satırı örneği verilmiştir.


Kod:
//Access Veritabanı İçin
OleDbConnection oleConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Server.MapPath("veritabani_adi.mdb"));
//MSSQL Veritabanı İçin
SqlConnection sqlConn = new SqlConnection("server=localhost;database=syd;uid=sa;");


Bağlantı satırını belirttikten sonra bağlantımızı açıp kapatmak için,
Kod:
oleConn.Open(); / sqlConn.Open();
oleConn.Close(); / sqlConn.Close();
fonksiyonları kullanılır.


OleDbCommand Sınıfı :

Bu sınıf sayesinde ise Veritabanından çekeceğimiz veriler için gerekli olan sql cümlelerimizi(CommandText) tanımlayabiliyoruz. Yine bu sınıf sayesinde sql cümlemizin hangi bağlantıyla çalışması erektiğini belirtmek zorundayız. Ayrıca CommandTimeout ve CommandType propertylerine sahip olan OleDbCommand sınıfında bu değerler default olarak 30 ve Text değerlerini almaktadır. CommandType propertysinin Stored Procedure kullanmak isteyenler için değişmesi gerekmektedir.


Kod:
//burda girilen ilk parametre sql cümlemiz, ikincisi ise bu sql cümlesinin hangi bağlantıyla çalışacağını belirttiğimiz xxxConnection nesnemiz.
OleDbCommand oleCmd = new OleDbCommand("SELECT * FROM tablo_adi", oleConn);

CommandText imizi belirttikten sonra bunu çalıştırmamız lazım. Ado.NET de bu aşamada kullanışlı ve bize performans artışı sunacak işlemlerle karşılıyoruz. xxxCommand sınıfının bu kullanışlı fonksiyonlarını ve kısaca ne işe yaradıklarını açıklamak gerekirse;


OleDbCommand Sınıfının Fonksiyonları :

ExecuteNonQuery() : Bu fonksiyon sayesinde sql cümlemiz sadece çalıştırılır, geriye bir veri döndürmez. Bu yüzden bu fonksiyonu INSERT(Kayıt Eklemede), UPDATE(Kayıt Güncellemede) kullanmalısınız.


Kod:
OleDbCommand oleCmd = new OleDbCommand("UPDATE tablo_adi SET adsoyad = 'Emrah ÇETİNER' WHERE nick='WindRacer' ", oleConn);
oleCmd.ExecuteNonQuery();

ExecuteScalar(): Bu fonksiyon bize sadece bir değer döndürür. Eğer Sql cümleniz size sadece bir değer döndürecekse bu fonksiyonu kullanmanız performansınızı arttırır.

Kod:
OleDbCommand oleCmd = new OleDbCommand("SELECT COUNT(id) From tabloadi", oleConn);
//deger, kayitsayisi isimli bir label a aktarılıyor.
//ExecuteScalar dan bir object döner, bunun için string e çeviriyoruz.
kayitsayisi.Text = oleCmd.ExecuteScalar().ToString();

ExecuteReader(): Bu fonksiyon ise, belirtilen Sql cümlesini çalıştırıp geriye xxxDataReader sınıfı türünden bir nesne referansı döndürür. Bu fonksiyon ayrıntılı bir makale konusu olduğu için şu an ele alamıyorum...

Kod:
OleDbCommand oleCmd = new OleDbCommand("SELECT * From tabloadi WHERE nick='WindRacer' ", oleConn);
OleDbDataReader oleDR = oleCmd.ExecuteReader();
//oledbdatareader işlemleri

Ve çok çok önemli bir şey daha; lütfen bağlantılarınızı kapatmayı unutmayınız.
Kod:
.Close()

Bir sonraki makalede görüşmek üzere, sırada xxxDataReader ve xxxDataAdapter var. Bağlantılı katmana ait bu sınıflarla uygulamalarınızdaki verilerin kontrolü daha rahat olacak.

herkeze çalışmalarında başarılar dilerim.

Bu yazı href=http:\\www.maxiasp.net>Maxiasp.net'den alınmıştır[\B]
 
Geri
Üst