C# Mysql Veri Okuma

C# Mysql Veri Okuma

C# Mysql Veri Okuma

  5 dakika Okuma Süresi
Merhabalar, C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde MySql veritabanından veri okumayı anlatacağım. Hadi başlayalım !

Öncelikle Visual Studio aracılığıyla bi proje oluşturup MySql paketini kuralım. Bunun için Nuget paket yöneticisini açıp
install-package mysql.data
komutunu girelim. Bu komut sayesinde Nuget, MySql paketini indirecek ve projemize dahil edecektir.
MySql paketini indirdik fakat kod yazacağımız sayfada çağırmadık, yazacağımız kodları derleyicinin tanıması ve hem derleme hemde çalışma zamanında hata almamak için sayfanın en başına
using MySql.Data.MysqlClient;
kod satırını ekleyelim.

Veritabanından veri okumak için öncelikle veritabanına sorgu göndermeliyiz, e tabi sorgu gönderebilmek için veritabanına bağlanmamız gerekecek.
Şimdi ilk adım olan bağlantı işlemini halledelim.
MySql'e bağlantı yapabilmek için MysqlConnection sınıfını kullanmamız gerekiyor. Hemen bu sınıftan yeni bir nesne türetelim;
MysqlConnection baglanti = new MysqlConnection("server=localhost; uid=root; pwd=; database=deneme;");
Nesne türetirken constructor fonksiyona gönderdiğimiz server ile veritabanı sunucusunu, uid ile veritabanı kullanıcı adını, pwd ile veritabanı şifresi ve database ile de veritabanı adını belirtmemiz gerekiyor.

Bağlantı bilgilerimiz tamam, şimdi sorgu gönderme işlemlerini halledelim.
Sorgu gönderebilmek için aktif bir bağlantının kurulmuş olması gerek, MysqlConnection nesnesi ürettiğimizde bağlantı sağlanmış olmuyor, bağlantıyı sağlayacak nesneyi türetmiş oluyoruz. Bağlantıyı aktifleştirmek için baglanti nesnesi içerisinde bulunan Open() fonksiyonunu kullanıyoruz.
baglanti.Open();
Bağlantıyı da açtık, şimdi veritabanına komut gönderelim.
Bunun için MysqlCommand sınıfından faydalanıyoruz ve bu sınıfın yeni bir nesnesini türetmemiz gerek.
Constructor metod ise parametre olarak string tipte sorgu cümlesi ve MysqlConnection tipinde bağlantı bilgisi istiyor.
Örneğin ogrenciler isimli bir veritabanımız olduğunu varsayalım, bu veritabanından tüm verileri çekelim. Buyrun;
MysqlCommand komut = new MysqlCommand("select * from ogrenciler", baglanti);
Veritabanı sorgusunu çalıştıracak nesneyi de oluşturduk, fakat henüz veritabanına ne gönderdik ne de cevabına baktık.
Veritabanına gönderilen sorgunun cevabını almak için yine MySql sınıflarından biri olan MysqlDataReader sınfını kullanacağız ve bu sınıf hem okuma yaparken hem de sorguyu çalıştırıyor ve kullanımı şöyle;
MysqlDataReader okuyucu = komut.ExecuteReader();
Okuyucumuz da hazır ama gelen veri boş olabilir, yani sorgumuz herhangi bir sonuç döndürmeyebilir.
Boş gelen sonucu okumak istediğimizde hata fırlatacağı için öncelikle verinin boş olup olmadığını, daha doğrusu sorgudan gelen cevap okundu mu okunamadı mı onu kontrol etmemiz gerek.
Eğer okunursa istediğimiz işlemleri yapabiliriz.
Örneğin, az önce veritabanına gönderdiğimiz sorgudan gelen cevaba bakıp, okunursa ogrenciler tablosunda bulunan adi sütunundaki veriyi MessageBox ile gösterelim.

if(okuyucu.Read())
    MessageBox.Show(okuyucu["adi"].ToString());
MessageBox içerisine bakacak olursanız okuyucu["adi"] şeklinde eriştik ve buradaki adi kısmı veritabanında bulunan sütunun adıdır. Yani sorgudan gelen cevaba okuyucu["tablo_adi"] şeklinde ulaşıyoruz.
Eriştiğimiz veri object tipinde olduğu için de MessageBox'ta gösterebilmek için string'e çevirdik.

Veriyi okuduk ama if bloğu tek sefer çalışacağı için sadece tek veri okunur.
Çoklu veri okumak istersek if yerine while döngüsü kullanmamız gerekiyor. Örneğin, az önce okuma yaptığımız adi tablosunda birden fazla veri olduğunu varsayalım ve hepsini teker teker okuyup yine MessageBox ile kullanıcıya gösterelim;

while(okuyucu.Read())
    MessageBox.Show(okuyucu["adi"].ToString());
Görüldüğü üzere tekli okuma ile çoklu okuma arasında sadece kullanılan yapı farklı, yani if gitti while geldi :) Geri kalan herşey aynı.

Veriyi okuduk, kullanıcıya gösterdik, hatta iyice abartıp abudik gubudik işlemler yaptık ve yapmamız gereken son birşey var. Aaa bitmedi mi ? :(
Hatırlarsanız veritabanı bağlantısını açmıştık ve işlemlerimizi hallettik, e artık şu bağlantıyı geri kapatalım değil mi ? Boş yere açık kalıpta belleğe yük bindirmesin.
Ayrıca bir bağlantı ile sadece bir işlem yapabilirsiniz, ikinci bir veri okuma işlemi yapmak istediğinizde bağlantıyı kapatıp tekrardan açmanız gerekiyor.
Bağlantıyı açmak için Open() kullandıysak, kapatmak içinse Close() kullanmalıyız.
baglanti.Close();

Evet bu dersimizde bu kadardı, yazdığımız tüm kodları daha toplu olması için aşağıya bırakıyorum;

MysqlConnection baglanti = new MysqlConnection("server=localhost; uid=root; pwd=; database=deneme;");
baglanti.Open();
MysqlCommand komut = new MysqlCommand("select * from ogrenciler", baglanti);
MysqlDataReader okuyucu = komut.ExecuteReader();
if(okuyucu.Read())      // Tekli veri okumak için
    MessageBox.Show(okuyucu["adi"].ToString());
while(okuyu.Read())   // Çoklu veri okumak için
    MessageBox.Show(okuyucu["adi"].ToString());
baglanti.Close();
Tüm C# derslerimize buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.


  • İçeriği Paylaş:

İÇERİĞİ DEĞERLENDİR

Toplam Değerlendirme Sayısı: 0
Toplam Değerlendirme: 0 / 5

Cevap Yaz