C# Sql Server Veri Okuma

C# Sql Server Veri Okuma

C# Sql Server Veri Okuma

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

Öncelikle Visual Studio aracılığıyla bi proje oluşturalım ve kodlarımızı yazmak için gerekli olan System.Data.SqlClient kütüphanesini projemize dahil edelim. Bu kütüphane C# yada .Net Framework ile birlikte gelmediği için bizim indirip projeye eklememiz gerekiyor. Onu da Nuget paket yöneticisi ile yapacağız.
Nuget paket yöneticisi konsolunu açıp
install-package system.data.sqlclient
komutunu girelim. Bu komut sayesinde Nuget, kütüphaneyi indirip projemize dahil edecek ve kullanılabilir hale getirecektir.

Evet kütüphaneyi kurduk fakat şu anda kullanamıyoruz çünkü yazacağımız sayfada çağırmadık. Kod yazacağımız sayfaya gelip, sayfanın en başına
using System.Data.SqlClient;
kod satırını ekleyerek kütüphaneyi çağıralım.

Tüm ön hazırlıkları tamamladık, artık asıl işlemleri yapmaya başlayabiliriz.
Sql Server'dan veri okuyabilmek için öncelikle veritabanına bağlanmamız, sonra veri okuyacak sql komutumuzu göndermemiz ve son olarakta veri okuması yapmamız gerekiyor.
Öncelikle veritabanına bağlanmamız gerekiyor dedik, hadi gelin şimdi bağlantıyı yapacak nesneyi oluşturalım.
Bunun için SqlConnection sınıfını kullanacağız ve bu sınıfın yeni bir nesnesini türetmemiz gerekiyor. Constructor yani yapıcı metod string tipte bağlantı bilgilerini istiyor. Örnek nesne türetmemiz şöyle olacak;
SqlConnection baglanti = new SqlConnection("Data Source=localhost\SQLEXPRESS; Initial Catalog=deneme; Integrated Security=true");
Burada belirttiğimiz Data Source ile veritabanı sunucusunu, Initial Catalog ile veritabanı adını ve Integrated Security ile de güvenli bağlantı kuracağımızı bildirdik.
Bağlantı nesnesini oluşturduk, artık Sql Server'a bağlantı kurabilir ve istediğimiz sorguları çalıştırabiliriz.

Bağlantıyı oluşturduk fakat bu bağlantıyı açıp veritabanına bağlanmamız gerekiyor, aksi takdirde bağlantı yapılmayacaktır. Bağlantıyı açmak için
baglanti.Open();
kod satırını kullanacağız.

Bağlantıyı da yaptık ve artık veritabanına sorguyu göndermemiz gerekiyor.
Örneğin ogrenciler isimli bi tablomuz olduğunu varsayalım, bu tabloda bulunan bütün verileri okuyalım.
Sorgu göndermek için yine System.Data.SqlClient kütüphanesi altında bulunan SqlCommand sınıfını kullanacak ve elbette bu sınıftan yeni bir nesne türetmemiz gerekiyor.
Bu sınıfın yapıcı metodu ise string tipte sql cümlesini ve SqlConnection tipinde bağlantı nesnesi olmak üzere 2 parametre istiyor.
SqlCommand komut = new SqlCommand("select * from ogrenciler", baglanti);
Sorgumuzu da gönderdik fakat henüz sorgu cevabını okuyacak okuyucumuzu belirtmedik. Bunu da SqlDataReader sınıfını kullanacağız ve komut nesnesi üzerinden okuma yapacağımız için SqlCommand'ın okuyucu nesnesinden türeteceğiz.
SqlDataReader okuyucu = komut.ExecuteReader();
Okuyucuyu da belirttik fakat okumaya başlamadık, okumaya başlayalım başlamasına ama ya veri okunmazsa ? Okunacağından emin değilsek yani statik veri okuyacaksak önce okunup okunmadığını denetlememiz gerekiyor.
Tabi bunu da okuyucu nesnesi üzerinden kontrol edeceğiz, eğer okunursa okuma işlemi yapacağız.
Örneğin okuduğumuz veriler arasından ogrenciAdi sütununda bulunan veriyi MessageBox yardımı ile kullanıcıya gösterelim.

if(okuyucu.Read())
    MessageBox.Show(okuyucu["ogrenciAdi"].ToString());
Farkettiyseniz if bloğu kullandık, tabi if bloğu bir kere çalışacağı için tek veri okunacaktır. Çoklu veri okumak istersek döngü kullanmamız ve her döngüde verinin okunup okunmadığını kontrol etmemiz gerekiyor. Yani veri okundukça, boş veri gelmedikçe okuma yapmamız gerek, bunun en güzel yöntemi de while döngüsü kullanmak olacaktır.
Şimdi de az önceki örnekte yaptığımızı biraz değiştirip her gelen veriyi kullanıcıya MessageBox ile gösterelim.

while(okuyucu.Read())
    MessageBox.Show(okuyucu["ogrenciAdi"].ToString());
Gelen veri object tipinde olduğu için MessageBox içerisinde göstermek için string'e çevirmemiz gerekiyor, elbette siz farklı veri tiplerine çevirebilirsiniz.
Evet istediğimiz veriyi okuduk ve işlemlerimizi tamamladık fakat hatırlarsanız veritabanına bağlantıyı açmıştık fakat henüz kapatmadık, şu anda açık bekliyor ve bellekte yer işgal ediyor. Onu kapatalım da belleği biraz olsun serbest bıraksın.
Bağlantıyı açarken Open() fonksiyonunu kullandığımıza göre, kapatırken de Close() metodunu kullanmalıyız.
baglanti.Close();

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

SqlConnection baglanti = new SqlConnection("Data Source=localhost\SQLEXPRESS; Initial Catalog=deneme; Integrated Security=true");
baglanti.Open();
SqlCommand komut = new SqlCommand("select * from ogrenciler", baglanti);
SqlDataReader okuyucu = komut.ExecuteReader();
if(okuyucu.Read())        // Tekli veri okumak için
    MessageBox.Show(okuyucu["ogrenciAdi"].ToString());
while(okuyucu.Read()) // Çoklu veri okumak için
    MessageBox.Show(okuyucu["ogrenciAdi"].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