13 Nisan 2014 Pazar

52 C# Görsel Programlama 52 C# da Access Veri Tabanı İşlemleri 2 Veri Tabanından Veri Çekme 1

Merhabalar herkese. Access veri tabanı işlemlerinde 2. ders ile yine beraberiz. Geçen dersimizde hazırladığımız bir veri tabanını C# projemize nasıl dahil edebiliriz bunu anlatmaya çalışmıştım. 

Bu anlatımımda ise bağladığımız bu veri tabanında nasıl veri çekilir bundan bahsedeceğim.

 Veri tabanından veri çekmenin pek çok yolu mevcut her dersimizde birini anlatacağım. Bu dersimizde verilerimizi DataTable nesnesi içine atıp bu nesneden nasıl ulaşabiliriz bunu anlatacağım. 

O zaman Bismillah diyelim ve başlayalım.

İlk dersimizden veri tabanını projemize bağlamış olduğunuzu varsayarak anlatmaya devam edeceğim. O yüzden ilk dersi okumayan arkadaşların C# Görsel Programlama 51 C# da Access Veri Tabanı İşlemleri 1  adresinden okuyabilirler. 

Öncelikle ne yapacağımızı amacımızın ne olduğunu anlatayım. 


Amacımız şu olacak kullanıcı listedeki kaçıcı kişinin bilgilerini görmek istediğini Textbox a girecek ve butona tıklandığında veri tabanında bilgileri çekip Labellara yazdıracağız.

Öncelikle projemize 


bu kütüphanemizi ekliyoruz.

Bütün veri tabanı işlemlerini metodlar içinde yazmaya özen göstereceğim. Sizinde kolaylık sağlaması açısından aynı şekilde yapmanızı tavsiye ederim.

Ve OLEDB uzayına ait tanımlayacağım tüm nesneleri global tanımlayacağım. Bu şekilde prorgamın istediğim her yerinden çağırabileyim.

Öncelikle kullanacağımız nesneleri tanımlayalım ve onlardan bahsedelim.



Geçen dersimizden biliyoruz ki, yol1 değişkenine atadığım değer veri tabanının bağlantı türünü ve dosya yolunu gösteren ifadeydi.

OleDbConnection: Veri tabanına bağlantı sağlamamızı sağlayacak olan nesnemiz. Ve biz biliyoruz ki string olarak bir veri tabanı yolunu parametre olarak alır.


OleDbCommand: İsmindende anlaşılacağı üzere veri tabanı üzerinde istediğimiz sorguları çalıştırmamızı sağlayan nesnemizdir.


OleDbAdapter: Bu nesne ise bir nevi program içinde oluşan sanal bir veri tabanıdır diyebiliriz. Komut satırı ile işlemlerini yaptığımız ifadeleri Adapter nesnesi içinde tutarız. Ne demek istediğimi birazdan daha detaylı anlatacağım.


DataTable: Bu nesnemiz ise verilerimizi birazdan üzerinden tutacağımız nesnemiz. Veri tabanındaki bilgileri bu nesne üzerinde tutacağız ve ulaşımlarınıda bu nesne üzerinden sağlayacağız.


Şimdi gelelim kodlarımıza;



Öncelikle veri tabanına bağlanmamızı sağlayacak metodu yazdık. Burada Try Catch bloğu dikkatimizi çekiyor. Burada eğer veri tabanına bağlanmakta bir sıkıntı yaşanırsa program Catch blogu içindeki kodları çalıştırır. Ben burada oluşabilecek bir hatanın veri tabanından yani OleDb nesnesinden kaynaklanacağını düşündüğüm için OleDbExceptiıon ile bu veri tabanı hatasını öğrenmeye çalıştım. Bir mesajla hatayı bize göstermesini sağladım.

Artık sıra geldi verileri çekeceğimiz metoda.



Veri tabanlarının en önemli özelliklerinden biri binlerce veriye üzerinde yapabileceğimiz bir sorgu sayesinde ulaşabilmemizdir. 


Burada sorgu değişkeninde yazmış olduğum sorgu ile birazdan veri tabanı üzerinde hangi işlemi yapacağımı belirttim.

Sorgumuzun programa söylediği şey ise şu, PersonelBilgileri tablosundan tüm verileri bana getir. Tüm verileri getirmesini * (yıldız) işareti ile sağladık. 

Hepsini değilde sadece istediğim bir kaç kolonun verilerini getirmek isteseydim nasıl yapacaktık?


O zaman * yerine aralarına virgül koyarak verilerinin gelmesini istediğimiz kolon isimlerini yazacaktık.

 Virgülden sonra boşluk koymanın yada koymamanın bir önemi yoktur. Ama koyarak daha okunaklı kodlar yazabiliriz.


ADO.NET ten önceki veri erişim teknolojisi olan ADO da veri tabanı üzerinde işlem yaparken çalışan program boyunca veri tabanı açık kalır programla işimiz bittiğinde kapatılırdı. 

Ama ADO.NET ile gelen bir özellik sayesinde, veri tabanını sadece işlem yaptığımız sürece açık tutup işlemimiz bittiğinde ise kapatabilmekteyiz. OleDb de ADO.NET altındaki bir veri sağlayıcısı olması nedeniyle veri tabanı üzerinde işlem yapabilmek için öncelikle bağlantı.Open() ifadesi ile bağlantıyı erişime açıyoruz.

Gelelim şimdi OleDbCommand nesnesine. 

Oluşturduğumuz sorgumuzu hangi veri tabanı üzerinde çalıştıracağımızı belirlediğimiz nesnemizdir. Mantık şöyle işler. İlk parametremiz string türünde sorgu parametremizdir. İkincisi ise bu sorgunun hangi bağlantı üzerinde çalışacağını bildiren connection türündeki parametredir. 

Sorgumuzu yaptık bunları Command ile istediğimiz veri tabanı üzerinde çalıştırdık. Command ile çalışan sorgu komutundan sonra elimizde bu sorgunun bize getirdiği veriler oluşur. 

OleDbAdapter nesnesi de eldeki bu verileri kaydettiğimiz sanal veri tabanımızdır. OleDbAdapter nesnesi kendine Command türünde bir parametre alır. Ve o komut dizininin getirdiği verileri bünyesinde tutar. Bu kadar işlemi yaptık sıra geldi artık verileri sanal veri tabanından alıp kullanmaya.

Verilerimiz bu anlatımda tablo nesnemize aktaracağız ve oradan erişim sağlayacağız demiştik.

Adapter nesnesi ile kayıt nesnesine doldurduğumuz verileri;

kayıt.Fill(tablo); komutu ile tablomuz içine alıyoruz arkadaşlar.

Soldan sağa kodları okursak her zaman mantığınıda oturtabiliriz. Kayıt içindeki verileri doldur nereye tablo ismindeki nesneye bu kadar :D

Son olarak da artık işimiz bittiğine göre veri tabanını kapatıyoruz.

Niçin kapatıyoruz ki açık kalsa ne olacak sorusu aklımıza gelebilir.

En basit nedeni veri tabanını buradaki işlem sonucunda kapatmaz isek bu işlem için açık kaldığından aynı program üzerinde veri tabanı üzerinde başka bir işlem yapmak istediğimizde bu işlemin yapılmasına izin vermicektir program. Bu yüzden veri tabanı bağlantımızı her işlemimiz sonunda kapatıyoruz.

Artık sıra geldi tabloya çektiğimiz bu verileri nasıl kullanacağımıza.



Tablomuzun özelliklerinde biri olan Rows bize burada yardımcı olacak olan kodumuz.

tablo.Rows[int x]["kolon_ismi"] 

şeklindedir.

Burada kodu okuyacak olursak. Tablo içindeki oluşan satırlardan int x ile hangi satırdaki verileri kullanacağımızı belirtiriz. Bu satırdaki hangi kolondaki veriyi çekmesini istiyorsak da ["Kolon_ismi"] diye belirttiğimiz yerde belirtiriz ve böylelikle o sütundaki istediğimiz satır elemanını çekmiş oluruz.

Önemli Not: Burada unutmamamız gereken şey ise tablo içinde saymaya sıfırdan başladığımızdır. Yani ilk verimizi çağırmak istersek int x dediğimiz yere 1 değil 0 yazmamız gerekecektir.


Şimdi yaptığımız işlemler sonucunda programımızda ne olmuş onu görelim.




Böylelikle veri tabanımızdan verilerimizi çekip kullanmış olduk. Bir sonraki dersimizde farklı bir şekilde veri tabanından veri çekme ve kullanma işlemini anlatacağım diyeyim ve huzurdan ayrılayım. Çalışan herkese kolaylıklar dilerim vesselam.

Murat Bilginer











Hiç yorum yok:

Yorum Gönder