C# ile DataGridView üzerinde veri listeleme


C# DataGridView ile Sql bağlantısı kullanılarak verilerin nasıl listelendiğini çok basit bir biçimde anlatmaya çalışacağım.

Burada iki ayrıntıya değinmek istiyorum. Birincisi; Sql kullanacaksanız namespace olarak”using System.Data.SqlClient” şeklinde namespace eklemek zorundasınız. İkincisi; SqlConnection, SqlDataAdapter ve DataSet nesnelerinin hemen Form1 classının altında tanımlandığını göreceksiniz. Yukarıda bu nesneleri tanımlamamın amaçı Form1′ in tamamında bu nesneleri kolayca ulaşmak istiyor olmam. Ayrıca gene Form1′ in tamamında rahatça kullanabilmem için Veritabanı bağlantı ve sorgu cümleciklerini tanımladığımı göreceksiniz (sqlStr, sqlCmd).

Örneği indirmek için tıklayın…

datagridview1

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient; //Data.SqlClient namespace ini ekliyoruz

namespace SamplePerson
{
    public partial class Form1 : Form
    {
        //Form1 içerisinde methodlardan bağımsız kullanabilmek için SqlConnection, SqlDataAdapter ve Dataset nesnelerini tanımlıyoruz
        SqlConnection sqlCon;
        SqlDataAdapter da;
        DataSet ds;

        //Form1 Veritabanı bağlantısı için sqlStr Sql sorgumuz için sqlCmd yi tanımlıyoruz
        string sqlStr = @"Data Source=.\SQLEXPRESS;Initial Catalog=AdventureWorks2012;Integrated Security=SSPI;";
        string sqlCmd = "select * from Person.Person"; // AdventureWorks2012 Database indeki Person tablosunu getirir

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                dataGridView1.DataSource = null; //Her click de datasource u null a eşitleyip içeriğini temizliyoruz

                sqlCon = new SqlConnection(sqlStr);//Yukarıda tanımladığımız Sql nesnesini oluşturup sqlStr ile veritabanımıza bağlanıyoruz
                sqlCon.Open(); //bağlantıyı açıyoruz

                da = new SqlDataAdapter(sqlCmd, sqlCon);//dataapter nesnesini oluşturup sqlCmd sorgu cümlesini ve sqlCon veritabanı bağlantımızı yazıyoruz
                ds=new DataSet();//dataset nesnesini oluşturuyoruz
                da.Fill(ds,"Person");//sqlCmd sorgusundan gelen veriyi dataset nesnesine ekliyoruz. ben burada table ismi için Person dedim siz başka bir isimde verebilirsiniz

                if (ds.Tables[0].Rows.Count==0)//Person tablosunda herhangi bir veri yoksa (boşsa) aşağıdaki blok çalışacak
                {
                    label1.Text = "Kayıt bulunamadı";
                    return;//kayıt olmadığı için return ile bloğun dışına çıkıyoruz
                }
                else//kayıt varsa
                {
                    label1.Text= ds.Tables[0].Rows.Count+ " adet kayıt getirildi";//satırları sayıp adet sayısını label ın textine atıyoruz
                    dataGridView1.DefaultCellStyle.BackColor = Color.Olive;//Default hücre stilini rengini belirliyouz
                    dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.OliveDrab;//Alternatif satır default hücre stil rengini belirliyoruz
                    dataGridView1.DataSource = ds.Tables["Person"];//sqlCmd sorgusu ile çektiğimiz kayıtlar datagridview1 üzerinde gösteriliyor
                }

            }
            catch (SqlException ex)
            {
                MessageBox.Show("Hata : "+ex); //Veritabanına bağlantı sırasında alınan bir hata varsa burada gösteriliyor

            }
            finally //button1_Click olduğu sürece bu bloğa uğramadan uygulama sonlanmıyor
            {
                sqlCon.Close(); //Açık olan Sql bağlantısı sonlandırılıyor
                da.Dispose(); //SqlDataApter nesnesi dispose ediliyor
            }           

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}
Print Friendly, PDF & Email

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir