Bu örnekte C# ile veritabanından ListBox içine veri çekme işlemini gerçekleştireceğiz. Bu işlem için C# SQL Veritabanı bağlantısı oluşturacağız.
Bir ya da birden fazla satırların sonuç olarak döneceği sorgularda OledbCommand’ ın ExecuteReader özelliği kullanılmaktadır.
ExecuteReader geriye OleDbDataReader tipinde veri döndürmektedir.OleDbDataReader, sadece okunabilir olarak kullanılmaktadır. Satır satır okuma işlemi yapılmaktadır. OleDbDataReader kullanımı boyunca veritabanı bağlantısı açık kalmalıdır. Çünkü veritabanı ile bağlantılı olarak çalışmaktadır. Okuma işlemi sona erdiğinde OledbDataReader bağlantısınında kapatılması gerekmektedir.
Okuma işlemi OledbDataReader nesnesinin Read() metodu ile yapılmaktadır. Read() metodu geriye bool türünde değer döndürmektedir. Okunacak satır var ise true, yoksa false değerini döndürmektedir. Bildiğiniz üzere while döngüsü koşul true olduğu sürece icra edilmektedir. Burada da Read() metodu true değerini aldığı sürece işlem görmeye devam edecektir. İşlem sonunda ise SqlDataReader nesnesi Close() metodu ile kapatılmalıdır.
Örnek Uygulama: Personel isimli veritabanında bulunan kisiler tablosunda bulunan “kisi_ad” alanındaki verileri listbox1’e “kisi_soyad” alanındaki verileri listbox2’ye aktaralım.
İlk iş olarak veri tabanımızı hazırlayalım.”personel” isimli veritabanımızı projemizin “Debug” klasörü altında oluşturup kisiler isimli bir tabloyu aşağıdaki şekilde oluşturalım.
Daha sonra içerisine kontrol amaçlı bir kaç adet veri girelim.
Veritabanıyla işimiz tamam. Şimdi de formumuzu aşağıdaki gibi tasarlayalım.
Kodları yazmaya başlayalım.
İlk önce Access’e bağlanmak için gereken Data.Oledb namespace’ini import edelim.
1 2 3 | using System.Data.OleDb; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | namespace dtreader { public partial class Form1 : Form { OleDbConnection con; OleDbCommand cmd; OleDbDataReader dr; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { con = new OleDbConnection("Provider=Microsoft.ACE.Oledb.12.0;Data Source=personel.accdb"); cmd = new OleDbCommand(); con.Open(); cmd.Connection = con; cmd.CommandText = "SELECT * FROM kisiler"; dr = cmd.ExecuteReader(); while (dr.Read()) { listBox1.Items.Add(dr["kisi_ad"]); listBox2.Items.Add(dr["kisi_soyad"]); } con.Close(); } |
Add Comment