C# ile Datagridview'e Veritabanından veri çekme


C# Projelerimizde sıkça kullandığımız DataGridView aracı işimizi oldukça kolaylaştırıyor. Bunu visual studio içerisinden kolayca veritabanına bağlayabiliyorduk. Ancak bu yeni ekleme, silme yada veritabanında güncelleme yaptığımızda programı kapatıp açma zorunluluğu getiriyor bize. Buda kullanıcı tarafında kabul edilebilir bir şey değil. Bunun yerine kod ile bir fonksiyon oluştursak ve veritabanından veriyi fonksiyonu çağırdığımızda güncellesek çok daha iyi olur bence. Öncelikle gösteriş olması açısından şöyle bir form tasarladım. 
  • 13 Adet Label
  • 13 Adet TextBox
  • 1 Adet Button
  • 1 Adet DataGridView 
nesnelerini formuma ekledim. 


Form tasarımı bu şekilde yaptıktan sonra kodları yazmaya başlıyorum. Kod kısmına geçmek için form üzerine çift tıklayabiliriz yada forma sağ tık View Code alanını seçebiliriz.
Kod kısmına geçtiğimizde Eklememiz gerekek kütüphaneler şu şekilde.
Not: SQL veritabanı kullananlar için bu kütüphaneler. Ama diğer veritabanları içinde pek farklılık yok bir kaç harften başka.
using System.Data.Sql;
using System.Data.SqlClient;

Fonksiyonumuzu oluşturuyoruz ve kodlarımızı ekliyoruz.
  void doldur()
        {

        }

Bu şekilde fonksiyonumuzu boş bir alanda aynı zamanda classın içerisinde tanımlıyoruz. içine öncelikle veritabanı bağlantı cümlemizi tanımlamamız gerek.
 SqlConnection con = new SqlConnection("Data Source=Merdo\\SQLEXPRESS;Initial Catalog =okul;Integrated Security = true");

Burada SqlConnection bir bağlantı değişken tipidir. con ise değişken ismimizdir. Data Source Veri kaynağı anlamını taşır Merdo\SQLEXPRESS Benim sunucu adım. Kendi bilgisayarımdan çalıştığım için adım bu şekilde. okul Veritabanı adım ve peşinde güvenlikle alakalı bir kaç tanım var. Bunu yazdıktan sonra devam edelim. Bu kod satırında hata yapmamanız önemlidir. 
 DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter("Select * From TblOgrenciler", con);
            ds = new DataSet();
            con.Open();
            da.Fill(ds, "TblOgrenciler");
            dataGridView1.DataSource = ds.Tables["TblOgrenciler"];
            con.Close();

Peşine yukarıda verilen kodları yazalım. Burada önemli kısım şudur;
datagirdView1 sayfamdaki datagridin adı olmalıdır doğru yazılmaz ise altını kırmızıyla çizer ve proje çalışmaz. İkinci husus TblOgrenciler buda veritabanımdan çağırmak istediğim tablonun adı.
Buraya kadar her şey doğru yazılmışsa bir problem yaşanmayacaktır. Son olarak oluşturduğumuz fonksiyonu formun load kısmında ve istediğimiz butonların içerisinde çağırmalıyız. Ekleme, silme, güncelleme butonlarından sonra da fonksiyonu çağırmanız yaptığınız değişikliğin anlık olarak görünmesini sağlayacaktır. Fakat dikkat etmeniz gereken husus ekle, sil, güncelle'den sonra çağırdığınız satır con.close() kodundan sonra çağırmalısınız aksi halde 'bağlantı zaten açık' hatasını alabilirsiniz.
Fonksiyonu çağırmak için
doldur();
kodunu eklememiz yeterli. Kodlarımız tamamlandığında şu şekilde olacaktır.
  void doldur()
        {
            SqlConnection con = new SqlConnection("Data Source=Merdo\\SQLEXPRESS;Initial Catalog =okul;Integrated Security = true");
            DataSet ds = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter("Select * From TblOgrenciler", con);
            ds = new DataSet();
            con.Open();
            da.Fill(ds, "TblOgrenciler");
            dataGridView1.DataSource = ds.Tables["TblOgrenciler"];
            con.Close();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            doldur();
        }
Ve çalıştığında görüntü şekilde olacaktır.


Umarım faydalı olabilmişimdir. Peki bu kötü tasarımları iyileştirmek istemez misiniz ? Mesela güzel bir login form tasarlamayı anlattığım yazıma göz atabilirsiniz > Login Form Tasarlama

Yepyeni yazılarda görüşmek dileğiyle. Beni Sosyal Medyadan takip etmeyi unutmayın !


Yorumlar

Bu blogdaki popüler yayınlar

Yazıcıda Bekleyen Belgeleri Hızlıca Temizleme

C# ile SQL Veritabanı Yedeğini Alma

SQL SERVER'da sa ve diğer kullanıcıları aktif etme