C# Üzerinde ADO.NET Örnek Uygulama 80918091 okunma
C# üzerinde veritabanı bağlantısı kurup tablo üzerinde işlemler yapmak için ADO.NET kullanıp, SqlCommand sınıfından yararlanacağız. Bunun için çeşitli bilgileri bilmemiz gerekiyor. ConnectionString’te sıkıntınız yoksa SqlCommand’ı bilmeniz gerek.
Not 1: Bazı terimleri Bilişim Sözlük üzerinde anlattığım için burada anlatma gereği duymuyorum, sözlük üzerinden metin bağlantısı verip orada okuyabilirsiniz.
Not 2: SqlCommand sınıfını daha önce burada anlatmıştım, dilerseniz buradan da göz atabilirsiniz.
Not 3: Veritabanı bağlantı konusunu burada anlatmıştım, aynı zamanda burada da ayrıca dile getirmiştim. Dileyenler göz atabilir.
Not 4: Try,Catch, Finally bloklarıyla çalışmayı burada anlatmıştım, dileyenler göz atabilir
ASP.NET üzerinde kullanımını burada anlatmıştım, fark etmemekle birlikte kullanımı da aynıdır. Ancak biraz farklı da kullanabiliriz. SqlCommand, SQL sorgularını çalıştırmaya yarayan bir çeşit sınıftır. Çeşitli metotları vardır. Bu metotları kullanarak işlem yapacağız.
Form ekranımız aşağıdaki gibi olsun.
Bir adet DataGridView, bir adet button ve bir adet label bize bu işlem için yeterli.
Şimdi DataGridView nesnemize veritabanındaki bir tablodan verileri listelettireceğiz. Bunun için ayrı bir kod bloğu oluşturup onun içerisine aşağıdaki komutları gireceğiz.
public void VerileriCek()
{
try{
Baglantim.Open();
SqlDataAdapter Da = new SqlDataAdapter("Select * from Uyeler", Baglantim);
DataTable Dt = new DataTable();
Da.Fill(Dt);
dataGridView1.DataSource = Dt;
}
catch
{
label1.Text = "Hata oluştu";
}
finally
{
Baglantim.Close();
}
}
Komutları adım adım açıklayalım.
Public void türünden bir fonksiyon oluşturduk, ismi ise VerileriCek.
SqlDataAdapter sınıfında Da isminde bir nesne oluşturduk ve işlemleri uzatmamak için hemen yanına SQL sorgumuzu yazıyoruz. Ben sorguda Uyeler tablosunu listelemesini istedim.
DataTable olarak Dt nesnesi oluşturdum, verileri buraya aktaracağız.
Da ismindeki SqlDataAdapter nesnemin çektiği verileri fiziksel ortama aktarmak için (ekrana) Fill ile Dt ismindeki DataTable nesneme tetikliyorum.
Ardından dataGridView nesnemi çağırarak DataSource yani veri kaynağı belirtiyorum, e az önce yaptığımız gibi sorgunun çalıştırdığı verileri DataTable nesnesi olan Dt’ye aktardık, haliyle DataSource = Dt;
Aşağıdaki gibi olacaktır.
Form ekranı üzerine gelelim. Butona çift tıklayıp click’i aktifleştirelim. Şimdi butona tıkladığımızda sorgumuzu çalıştırsın.
try
{
Baglantim.Open();
SqlCommand komutum = new SqlCommand();
komutum.CommandType = CommandType.Text;
komutum.Connection = Baglantim;
komutum.CommandText = "Update Uyeler Set KullaniciAdi ='draje' where AdSoyad='Recep Şerit'";
int kayitsayisi = (int)komutum.ExecuteNonQuery();
label1.Text = "Tablodaki güncellenen kayıt sayısı=" + kayitsayisi.ToString();
}
catch
{
label1.Text = "Hata oluştu";
}
finally
{
Baglantim.Close();
}
Adım adım ne yaptığımıza bakalım.
SqlCommand sınıfında komutum isimli bir nesne oluşturduk.
Komut türünü belirtmek için CommandType metodundan yararlanacağız, burada CommandType.Text ise komut türümüz bir text (yani sayısal değer olmayan).
Connection nesnesini oluşturduğumuz komutum isimli SqlCommand sınıfına eşitliyorum, veritabanına bağlanmak için Baglantim nesnesini kullanacak.
CommandText ile oluşturduğuz komut türüne sorgumuzu yazıyoruz. Sorguda bildiğiniz üzere Uyeler tablosundan AdSoyad sütunu Recep Şerit olanın KullaniciAdi sütununu draje olarak güncelle dedik.
Butona tıkladığımızda güncellenen kayıt sayısını vermesini istiyorsam bunun için de bir nesne oluşturmam lazım ki bu sayısal olmalı. Int bizim için uygun. Int türünden kayitsayisi isimli nesne oluşturduk. Bu nesneyi ExecuteNonQuery ile birleştirirsem veritabanından kaç tablonun güncellendiğini bilebiliriz.
Kayitsayisi isimli nesneyi oluşturduktan sonra bunu komutum nesnesine dönüştürmem gerekiyor. Bilindiği üzere bir nesnenin veri türünü belirtmem için başına parantez içinde veri türünü girmem yeterli oluyor. Bunun için başında (int) var.
Update sorgusu geri değer döndürmez, haliyle bu bir ExecuteNonQuery, komutum.ExecuteNonQuery dediğimizde komutum nesnesi direk çalışacaktır.
Try bloğundaki son adım ise bunu label’a atamak olacak. Label’ı çağırıp, text’ine kayitsayisini atarsak bize güncellenen kayıt sayısını verecektir. ToString ile de sayısal veriyi ekrana yazdırdık.
Aşağıdaki gibi olacaktır.
Şimdi VeriCek() fonksiyonumuzu form1 bloğuna yazıp çalışmasını sağlayacağız. Eğer yazmazsanız fonksiyon öyle kalır, çalışmaz. Çalışması için public form1() penceresine fonksiyon ismi yazılır, yani çağrılır.
Şimdi projemizi çalıştıralım. Bakalım tablomuza verilerimiz gelmiş.
Güncelle butonuna basalım ve kaç kayıt güncellenecek bir bakalım.
Görüldüğü üzere projemiz başarıyla çalıştı.
Kolay gelsin.
Recep ŞERIT
BİR YORUM YAZIN