Bu yazımızda C# Windows Formda bulunan DataGridView içine Access veritabanı dosyasında bulunan verileri Class ve List yapısını kullanarak çekeceğiz. Sınıf yapısında oluşturduğumuz metotta verileri çekip geriye List olarak döndüreceğiz. Daha sonra dönen bu List (Liste) yi DataGridView kontrolüne bağlayacağız.
Örneğimize ait Form tasarımını basit bir şekilde oluşturuyoruz.
Daha sonra kullanacağımız veritabanı dosyasını projemizin içinde ../Bin/Debug klasörü altına kopyalıyoruz. Örnekte kullanacağımız dosya kutuphane.accdb ve Tablo ise “Ogrenci” olacak.
Şimdi Class larımızı oluşturacağız. Basit bir şekilde Solution Explorer penceresinden Add-Class yöntemini kullanabilirsiniz.
Şimdi oluşturduğumuz “Ogrenci.cs” ve “OgrenciProvider.cs” sınıflarını kısaca açıklayalım. Ogrenci.cs sınıfını access veritabanındaki tablomuzdaki alanlara göre oluşturduk.
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | class Ogrenci { int _id; int _numara; string _ad; string _soyad; string _telefon; public int Id { get { return _id; } set { _id = value; } } public string Ad { get { return _ad; } set { _ad = value; } } public string Soyad { get { return _soyad; } set { _soyad = value; } } public string Telefon { get { return _telefon; } set { _telefon = value; } } public int Numara { get { return _numara; } set { _numara = value; } } |
OgrenciProvider isimli sınıfımızda ise veritabanı işlemleriyle ilgili metotları oluşturacağız. Örneğimizde şu an için sadece veri çekme işlemini gerçekleştireceğiz.
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 33 | class OgrenciProvider { OleDbConnection con; OleDbCommand cmd; public OgrenciProvider() //Kurucu metotta bağlantı yolumuzu belirledik. { con = new OleDbConnection("Provider=Microsoft.ACE.OleDb.12.0; Data Source=dbKutuphane.accdb;"); } public List<Ogrenci> OgrenciGetir() { List<Ogrenci> OgrenciListesi = new List<Ogrenci>(); string sql = "SELECT *FROM Ogrenci"; con.Open(); cmd = new OleDbCommand(sql, con); OleDbDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { Ogrenci ogr = new Ogrenci(); ogr.Id = Convert.ToInt32(dr[0]); ogr.Numara = Convert.ToInt32(dr[1]); ogr.Ad = dr[2].ToString(); ogr.Soyad = dr[3].ToString(); ogr.Telefon = dr[4].ToString(); OgrenciListesi.Add(ogr); } con.Close(); return OgrenciListesi; } } |
Class‘ ımızı inceleyelim. Öncelikle bağlantı için kullanılacak nesnelerin oluşturulduğunu görüyoruz. Daha sonra kurucu metot altında bağlantımızı yolunun tanımlandığını görmekteyiz.
OgrenciGetir isimli metotta ise geriye List türünden bir Liste döndürüyoruz. Bu liste içine DataReader nesnesini kullanarak access veritabanında Ogrenci tablosundan verilerin eklenmesini sağlıyoruz. Artık ana programda bu metot çağrıldığında geriye OgrenciListesi isimli içinde öğrencilerin listesinin bulunduğu bir List öğesi dönecektir.
Şimdi de Formumuza geri dönerek bu işlemlerin gerçekleştirilmesini sağlayalım. Örneğimizde Form yüklendiğinde yani Form_Load olayında verilerin çekilmesini sağlayacağız.
1 2 3 4 5 6 7 | private void Form1_Load(object sender, EventArgs e) { OgrenciProvider op = new OgrenciProvider(); dataGridView1.DataSource = op.OgrenciGetir(); } |
Görüldüğü gibi işlem oldukça basit. “OgrenciProvider” sınıfından “op” isimli bir nesne oluşturarak DataGrid kontrolünün DataSource özelliğine bu sınıfta bulunan OgrenciGetir metodundan gelen List öğesini bağladık. Projemizi çalıştırdığımızda verilerin DataGridView içine geldiğini göreceğiz.
Örneğe ait Video:
Aynı şekilde listview nesnesinde kullanabilir miyiz ?