Bu yazımızda daha önce SQL Veritabanı kullanarak yapmış olduğumuz veritabanındaki tablo isimlerini Combobox‘ a doldurma ve seçilen tablodaki kayıtların DataGridView‘ de listelenmesini sağlayan uygulamayı Access veritabanı dosyası kullanarak gerçekleştireceğiz.
Sayfamıza 1 adet Combobox ve 1 adet DataGridView ekleyerek projemize başlayalım.
Form yüklendiğinde Combobox içerisine access veritabanı dosyamızın içindeki tablo isimlerinin gelmesini sağlayan ve seçilen tabloya göre DataGridView içinde verileri görüntüleyen kodları oluşturalım. Öncelikle ticaretsade.mdb isimli access dosyasını kullanacağımızı belirtelim. Bu dosyayı projede “../Bin/Debug “ klasörü içerisine kopyalayacağız.
Kodlarımıza geçelim. İlk olarak aşağıdaki kütüphaneyi projemize dahil ediyoruz.
1 2 3 |
using System.Data.OleDb; |
Daha sonra bağlantımızla ilgili nesneleri Global olarak oluşturuyoruz.
1 2 3 4 5 |
OleDbConnection baglanti= new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source= ticaretsade.mdb"); OleDbDataAdapter da; DataSet ds; |
Şimdi Form yüklendiğinde Combobox içine tablo isimlerini çekelim
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
private void Form1_Load(object sender, EventArgs e) { baglanti.Open(); DataTable dt = baglanti.GetSchema("Tables"); for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i]["TABLE_NAME"].ToString().Trim().Substring(0,4) !="MSys") { comboBox1.Items.Add(dt.Rows[i]["TABLE_NAME"]); } //www.yazilimkodlama.com } baglanti.Close(); } |
Burada kullanmış olduğumuz
if (dt.Rows[i][“TABLE_NAME”].ToString().Trim().Substring(0,4) !=”MSys”)
koşulu yazma sebebimiz MSys ile başlayan tablo isimlerinin Combobox’ a gelmesini engellemek oldu. Dilerseniz bu koşulu yazmadan deneyerek aradaki farkı görebilirsiniz.
Şimdide Combobox’ta seçilen tabloya ait verileri DataGridView’ de listeleyelim. Bunun için kodlarımızı comboBox1_SelectedIndexChanged olayına yazacağız.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { string tablo = comboBox1.Text; string sorgu = "SELECT *FROM " + tablo; da = new OleDbDataAdapter(sorgu, baglanti); ds = new DataSet(); baglanti.Open(); da.Fill(ds, tablo); dataGridView1.DataSource = ds.Tables[tablo]; baglanti.Close(); } |
Kodlarımızın tamamı ve Projeyi çalıştırdığımızdaki ekran görüntüsü aşağıdaki gibi olacaktır.
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 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.OleDb; namespace combobox_access_tablo { public partial class Form1 : Form { OleDbConnection baglanti= new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source= ticaretsade.mdb"); OleDbDataAdapter da; DataSet ds; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { baglanti.Open(); DataTable dt = baglanti.GetSchema("Tables"); for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows[i]["TABLE_NAME"].ToString().Trim().Substring(0,4) !="MSys") { comboBox1.Items.Add(dt.Rows[i]["TABLE_NAME"]); } //www.yazilimkodlama.com } baglanti.Close(); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { string tablo = comboBox1.Text; string sorgu = "SELECT *FROM " + tablo; da = new OleDbDataAdapter(sorgu, baglanti); ds = new DataSet(); baglanti.Open(); da.Fill(ds, tablo); dataGridView1.DataSource = ds.Tables[tablo]; baglanti.Close(); } } } |
Peki çektiğimiz tablo isimlerinden görülmesini istemediklerimizi nasıl engelleriz