Bu yazımızda C# Windows Form ile Sql Server‘da bulunan veritabanı içinde bulunan Tablo isimlerinin Combobox‘a çekilmesi ve Combobox’tan seçilen Tablo Adı‘ na göre, tablodaki verilerin DataGridView kontrolünde listelenmesini sağlayacağız. Sql Server’da kullanacağımız veritabanının ismi kutuphane olacaktır.
Formumuzun tasarımı aşağıdaki gibi olacaktır.
Kodlarımızı yazmaya başlayalım. Öncelikle;
1 2 3 | using System.Data.SqlClient; |
ekliyoruz. Daha sonra public olarak gerekli nesnelerimizi oluşturuyoruz.
1 2 3 4 5 | SqlConnection baglanti; SqlDataAdapter da; DataSet ds; |
Form_Load olayında yani Form yüklendiğinde Sql Server‘ da bulunan veritabanının içindeki tablo isimlerinin Combobox kontrolü içine doldurulmasını sağlayalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | private void Form1_Load(object sender, EventArgs e) { baglanti = new SqlConnection("server=.;Initial Catalog=kutuphane;Integrated Security=SSPI"); baglanti.Open(); DataTable dt = baglanti.GetSchema("Tables"); for (int i = 0; i < dt.Rows.Count; i++) { comboBox1.Items.Add(dt.Rows[i]["TABLE_NAME"]); } baglanti.Close(); } |
Şimdide Combobox‘ta seçilen Tablo ismine göre DataGridView de verilerin listelenmesini sağlayalım. Kodlarımızı comboBox1_SelectedIndexChanged olayına yazıyoruz.
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 SqlDataAdapter(sorgu, baglanti); ds = new DataSet(); baglanti.Open(); da.Fill(ds, tablo); dataGridView1.DataSource = ds.Tables[tablo]; baglanti.Close(); } |
Kodlarımızın tamamlanmış hali 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 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace sqlTabloListeleme { public partial class Form1 : Form { public Form1() { InitializeComponent(); } SqlConnection baglanti; SqlDataAdapter da; DataSet ds; private void Form1_Load(object sender, EventArgs e) { baglanti = new SqlConnection("server=.;Initial Catalog=kutuphane;Integrated Security=SSPI"); baglanti.Open(); DataTable dt = baglanti.GetSchema("Tables"); for (int i = 0; i < dt.Rows.Count; i++) { comboBox1.Items.Add(dt.Rows[i]["TABLE_NAME"]); } baglanti.Close(); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { string tablo = comboBox1.Text; string sorgu="SELECT *FROM "+tablo; da = new SqlDataAdapter(sorgu, baglanti); ds = new DataSet(); baglanti.Open(); da.Fill(ds, tablo); dataGridView1.DataSource = ds.Tables[tablo]; baglanti.Close(); } } } |
Merhaba Böyle bir hata veriyor:
SQL sorgusu başarısız olduğundan ‘Tables’ koleksiyonu oluşturulamadı. Ayrıntılar için iç özel duruma bakın.”}
tablo isimleri rakam olduğunda hata veriyor datagride aktarırken hocam yardımcı olur musunuz ? comboboxta sorun olmuyor datagride aktarırken hata veriyo
bunlar combobox a veri çekme kondlar
SqlCommand komut = new SqlCommand(“select * from musteri”, OleCn);
SqlDataReader dr = komut.ExecuteReader();
while (dr.Read())
{
comboBox1.Items.Add(string.Format(“{0}”, dr[0]));
}
dr.Close();
OleCn.Close();
buraya veriyi alabiliyorum
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
SqlConnection OleCn = new SqlConnection(ConStr);
OleCn.Open();
SqlCommand komut1 = new SqlCommand(“Select * from musteri where [Fatura Bilgileri] Like ‘” + comboBox1.SelectedItem + “%'”, OleCn);
SqlDataReader dr1 = komut1.ExecuteReader();
if (dr1.Read())
{
firmabilgileiri.Text = (string.Format(“{0}”, dr1[4]));
}
dr1.Close();
OleCn.Close();
}
burada firbilgileri nesnesine veri çekemiyorum hatam nerde acaba ?
Hocam iyi gunler burdakı kodları yazıyorum lakin hata alıyorum Tables kısmında tam olarak ne yazacagız oyle mı kalıyor ?
HATA = The requested collection (Tbl_Top) is not defined .
şimdiden tesekkurler
Hocam iyi günler projelerinizi bizimle paylaşabilir misiniz resimler bazen yetersiz kalıyor hem projenin tamamını görmek bizim için daha iyi olacaktır diye düşünüyorum.
Saygılar…
Hocam bende tablolarla birlikte mysysaccesstorage….. bunun gibi farklı seçenekler de geliyor. ben bağalntıyı access üzerinden tasarladım. ama dediğim gibi bu hatayı veriyor
Merhaba. Tablo isimlerini combobox’a mouseclick özelliği ile yazdığınız kodlar sayesinde çektim. SelectedIndex özelliği ile yine kodlar sayesinde istediğim tabloyu datagrid’de görebiliyorum. Ancak bir daha combobox’a tablo seçmek için bastığımda tablo sayısı ikiye katlanıyor. Üçüncü defa yaptığımda üçe katlanıyor ve böyle artarak devam ediyor. Bunun için bir türlü bir yol bulamadım. Yardımcı olursanız sevinirim.
Düzelttim Hocam sorunu, ufak bir gözden kaçırma olmuş.
Olabiliyor bazen :). Kolay gelsin
Combobox’tan seçilen tabloya göre verileri listeledikten sonra bu veriler üzerinde insert, update, delete işlemlerini gösteren bir uygulama yaparmısınız hocam
insert, update, delete işlemlerini aşağıdaki linkteki konuda anlatıldığı şekilde yapabilirsiniz.
TIKLA
Fakat tüm tablolar aynı alanlara mı sahip olacak. Yani farklı alanlara aitse yeni formlar oluşturarak yapmak gerekecektir. Takıldığınız bölümlerde yardımcı olabilirim ama projenizi görmem gerekiyor.
Hocam elimdeki veri tabanında 130’dan fazla tablo var ve ben bunlar için ayrı ayrı formlar datagrid’ler textbox’lar oluşturmaya kalkarsam işin içinden çıkamam 🙂 Ben istiyorum ki tek bir form üzerinden bu 130 farklı tabloya insert, update, delete işlemi yapabiliyim. Tabi bu mümkün mü onuda bilmiyorum. Uygulamayı ve veri tabanını linkten indirip bakabilirsiz.
https://drive.google.com/open?id=0Bz9emK8X1CIxcl9zMVZfYk5VQlE
Merhaba. Yolladığınız projede veritabanına ait tabloları göremiyorum. ama dediğim gibi tablolarınız birbirinden farklı alanlardan oluşuyorsa kayıt ekleme işi biraz uğraştırıcı olacaktır.
İlgilendiğiniz için teşekkür ederim. Kolay gelsin Ahmet hocam 🙂
Merhaba öncelikle elinize sağlık çok faydasını gördüm sitenizin sizden bir ricam var bir proje üzerinden çalışıyorum mysqlden veriçekerek bunları datagridviewe gösteriyorum fakat aynı zamanda bu verileri grafik üzerinde de göstermek istiyorum baktım fakat grafik ile ilgi bir yazınızı göremedim zaten diğer sitelerde tam olarak açıklamamışlar iletişim bilgilerinizde yazmadığı için buraya yazmayı tercih ettim
şimdiden teşşekür ederim
Merhaba. Biraz geç oldu ama belki başkalarının da işine yarayabilir düşüncesiyle C# grafik oluşturma ile ilgili aşağıdaki örneği inceleyebilirsiniz.
GRAFİK OLUŞTURMA ÖRNEĞİ
hocam size özelden nasıl ulaşabilirim farklı bir konu hakkında soru sormam gerek
ahmet.cansever@yandex.com.tr
Teşekkürler size mail gönderdim hocam