Memik Yanık - Kişisel Web Sitesi Ana Sayfa | Hakkımda | Kitap Önerileri | Fotoğraflarım | RSS RSS | İletişim

Ado İle Veritabanı İşlemleri


2004 yılında yayınlanan ilk C# kitabımın bir bölümünde 18 sayfa boyunca bir tek SqlDataAdapter sınıfının Fill() metodunu kullanmış yani 18 sayfa boyunca Visual Studio sağ olsun bir tek(yani 1) satır kod yazmış olmama rağmen söz konusu 18 sayfadan suçlanmıştım. RecordSet ve DataSet hakkında bilgi sahibi olduğuma delalet etmesi bakımından ilk .NET uyumlu Visual Basic kitabımın 2 sayfasını burada sizinle paylaşmak istiyorum.

 

Visual Basic .NET’in, Visual Basic 6.0’ın Data gibi bir kontrolü yoktur. .NET öncesi Visual Basic sürümlerinde Data kontrolü sayesinde yerel bilgisayardaki Access dosyaları üzerinde kolayca işlem yapılabiliniyordu. Visual Basic 6.0 ile birlikte ADO veri erişim tekniği kullanıma sunulmuştu. Bu makalede Visual Basic 6.0’da kullanılan ADO sürümü ile veritabanları üzerinde nasıl işlem yapıldığını kısaca anlatacağım.

Visual Basic 6.0 ile gelen ADO veri erişim tekniğini kullanabilmek için ADO(ActiveX Data Object)’yu temsil eden library’nin projeye dahil edilmesi gerekiyor. Üzerinde çalıştığınız projeye bir library veya bileşeni dahil etmek istiyorsanız Solution Explorer penceresinden yararlanmanız gerekir. Solution Explorer penceresinde References seçeneğine ait kısayol menüsünden Add Reference komutu verilirse ekrana Add Rerefence diyalog kutusu gelir.



Add References diyalog kutusunda Microsoft ActiveX Data Objects 2.7 Library seçilip Select düğmesi ile diyalog kutusunun alt kısmına kopyalandıktan sonra OK düğmesi tıklanır. Eski ADO’yu üzerinde çalıştığım projeye dahil ettikten sonra formun Code penceresine geçip Declarations kısmında Dim deyimi ile Connection tipinde bir değişken tanımladım. Connection tipi ADODB’de tanımlıdır.

Dim Baglanti As New ADODB.Connection()

Connecton nesnesi için bu şekilde değişken tanımlanıp nesne hazırlandıktan sonra Recordset nesnesi sayesinde kayıt tipinde bir değişken tanımladım. ADO.NET’te RecordSet yerine Dataset nesnesi kullanılmaktadır. İyiki ilk .NET uyumlu kitabımdan aldığım bu kodda hazırladığım RecordSet nesnesine Kayit_set adını vermişim. Yoksa alışkanlıklarıma uyup "Kayit" adını vermiş olsaydım değişken adı çalmakla suçlanabilirdim.

Dim Baglanti As New ADODB.Connection()
Dim Kayit_set As New ADODB.RecordSet()

Bu şekilde Connection ve Recordset nesnesi tanımladıktan sonra formun Load olayını temsil eden metoda aşağıda verdiğim 2 satırı yazarak proje çalıştırıldığında bağlantının kurulup Recordset nesnesinin açılmasını sağladım. Connection nesnesi Open() metodu ile açılırken ilk parametre ile Provider’ı belirttim. Visual Basic 6.0 ile birlikte verilen ADO sürümünde daha çok Microsoft Jet veritabanı motoru kullanılıyordu.

Baglanti.Open("PROVIDER= Microsoft.Jet.OLEDB.4.0;Data Source=C:\Dosyalar\Stok.mdb;")
Kayit_set.Open("SELECT * FROM Stok_kartlari", Baglanti, _
                      ADODB.CursorTypeEnum.adOpenDynamic, _
                                           ADODB.LockTypeEnum.adLockOptimistic)

Connection nesnesini açarken kullanılan Open() metoduna 2. parametre(Data Source) olarak üzerinde işlem yapmak istediğim “Stok.mdb” dosyasını verdim. Bu koddaki 2. satırda “Kayit_set” adını vermiş olduğum RecordSet nesnesini Open() metodu ile açarken önce üzerinde işlem yapmak istediğim tabloyu ve alanlarını SELECT deyimi ile belirttim. RecordSet nesnesi açılırken Open() metoduna 2. parametre olarak kullanılacak Connection nesnesi(burada “Baglanti”) verilmelidir.

Bu işlemden sonra Recordset nesnesinden yararlanıp  istenen işlem yapılabilir. Proje çalış­tırılıp form ekrana getirildiğinde (Form1_Load() metodu işletildiğinde) tablodaki ilk kaydın içeriğini formun üzerinde görüntüleyebilmek için forma metin kutuları yerleştirdim.



Bu işlemden sonra Recordset nesnesinden yararlanıp  istenen işlem yapılabilir. Proje çalıştırılıp form ekrana getirildiğinde tablodaki ilk kaydın içeriğini formun üzerinde görüntüleyebilmek için forma metin kutuları yerleştirdim. Projede çalıştırıldığında ilgili tablonun(burada “Kartlar”) ilk kaydının içeriğinin metin kutularına aktarılmasını sağlamak için formun olayını temsil eden metoda aşağıda verdiğim satırları ekledim.

TextBox1.Text = Kayit_set.Fields("Stok_kodu").Value
TextBox2.Text = Kayit_set.Fields("Stok_adi").Value
TextBox3.Text = Kayit_set.Fields("Birim").Value
TextBox4.Text = Kayit_set.Fields("Fiyat").Value
TextBox5.Text = Kayit_set.Fields("Miktar").Value

Bu satırlardaki “Kayit_set”, yukarıda tanımlayıp Open() metodu ile açmış olduğum RecordSet nesnesidir. Bu satırlarda kullanılan Fields nesnesi dizi değişken gibi çalışmaktadır. Kendisine hangi alanın adı parametre olarak verildiğinde o alan ile ilgili bütün bilgilere ulaşılabilinmektedir.

Alanların içerikleri ile ilgilendiğim için Value özelliğini kullandım. İlk formun Load olayını temsil eden metodu bu şekilde düzenlen proje çalıştırıldığında tablodaki ilk kaydın içeriği ekrana getirilir. ADO ile erişim sağladığım Access veritabanındaki ilgili tablonun bir sonraki kaydına geçebilmek forma bir düğme yerleştirdim ve bu düğmenin Click olayını temsil eden metodu aşağıdaki gibi düzenledim.



Tablonun sonuna gidilmiş ise EOF özelliği True değerini, değilse False değerini içermektedir. Tablodaki bir önceki kaydın üzerine gitmek için MovePrevios(), en son kayda gitmek için ise MoveLast() metodu kullanılmaktadır.

Bir önceki kaydın üzerine gidip bu kaydın içeriğini formdaki metin kutularına aktarabilmek için forma başka bir düğme yerleştirdim ve bu düğmenin Click olayını temsil eden metodu aşağıdaki gibi düzenledim. Tablonun başında veya ilk kaydın üzerinde iken MovePrevios() metodu kullanılırsa BOF özelliği True olur.


ADO.NET 08.04.2009 10:32:12

YORUM YOK


YorumlarYorum Yaz
Ana Sayfa | Hakkımda | Kitap Önerileri | Fotoğraflarım | RSS | İletişim
Memik Yanık 2004-2009 © Tüm Hakları Saklıdır.
Hazırlayan www.semgoksu.com