ANASAYFA | BLOG | SORU CEVAP | REFERANSLARIM | DOWNLOAD | HAKKIMDA | İLETİŞİM | ARAMA
C# SQL İŞLEMLERİNİ TEK CLASS DA YAPMA

C# da SQL işlemlerini tek bir class da gerçekleştirerek C# da her formda fazladan SQL bağlantı kodu yazmaktan kurtulup hız kazanmış olacağız. Hem de kalabalık kod karmaşasından kurtulup daha sade bi şekilde programımızı kodlamış olacağız. Ana hatlarıyla SQL de yapacağımız

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

İşlemlerine birer örnek vererek kodlamayı nasıl yapacağımızı ve SQL komutlarını tek bir class da toplamayarak nasıl kullanacağımızı inceleyeceğiz.

Öncelikle örnek bir tane Form uygulaması açıyoruz, projemize bir tane de class ekliyoruz. Anlaşılması kolay olsun diye eklediğimiz class a SQL ismini verdim, sizde aklınızda kalacak şekilde istediğiniz ismi verebilirsiniz

FK-gizle

Yukardaki gibi bir form tasarladım. Buradaki butonların ve dataGridView in SQL işlemleri içinde SQLclass.cs isimli bir class oluşturdum, Şimdi SQLclass daki kodlarımıza bir bakalım. İlk olarak SQL bağlantısında kullanacağımız bağlantıyı tanımlamamız gerekiyor.

private SqlConnection conn = new SqlConnection("Data Source=FAUK;initial Catalog=sqlDeneme;user id = sa; password=1;Integrated Security =false");

Bu şekilde ilk olarak SQLConnection tanımlamamızı yapıyoruz. Daha sonra uygulamamızda kullanacağımız SQL işlemleri için fonksiyonlarımızı yazıyoruz. Temel anlamda SELECT – DELETE – UPDATE işlemleri için benzer yapıda fonksiyonlar kullanacağız

SATIR EKLEME İŞLEMİ İÇİN

        public void YeniSatirEkle(string Yeni_ad, string Yeni_soyad, string Yeni_tel)
        {
            sqlcontrol();
            conn.Open();
            SqlCommand kmt = new SqlCommand("Insert into  tbKisiler (ad,soyad,tel) Values ('" + Yeni_ad + "','" + Yeni_soyad + "','" + Yeni_tel + "')", conn);
            kmt.ExecuteNonQuery();
            conn.Close();
        }

Yeni satır eklemek için yazdığım fonksiyonda girilecek değerleri istiyorum ve gelen değerler ile insert işlemi yapıyorum, İsterseniz bu yapıyı TRY – CATCH yapısı ile kullanarak bool // True-False değer dönmeli olarak kullanabilir ve işlemin yapılıp yapılamadığını kontrol edebilirsiniz. Aynı şekilde bool dönüşü kullanmadan bu şekilde kullarak da kullanacağınız butonun altında TRY-CATCH yapısı ile hata oluşup oluşmadığını kontrol edebilirsiniz.
 

SATIR GÜNCELLEME İŞLEMİ İÇİN

        public void SatiriGuncelle(string ID, string Yeni_ad, string Yeni_soyad, string Yeni_tel)
        {
            sqlcontrol();
            conn.Open();
            SqlCommand kmt = new SqlCommand("UPDATE  tbKisiler set ad='" + Yeni_ad + "',soyad='" + Yeni_soyad + "',tel='" + Yeni_tel + "' where id=" + ID, conn);
            kmt.ExecuteNonQuery();
            conn.Close();
        }

 

Satir güncelleme için yazdığım fonksiyonda ise hangi satırın güncelleneceğinin belirlenmesi için fonksiyona ID bilgisinin de yollanmasını istedim ve Geçerli ID için verilerin güncellenmesini sağladım, bunu da dilerseniz istediğiniz kolonların güncellenip diğerlerinin sabit kalması şeklinde de değiştirebilirsiniz.

 

SATIR SİLME İŞLEMİ İÇİN

        public void SatiriSil(string ID)
        {
            sqlcontrol();
            conn.Open();
            SqlCommand kmt = new SqlCommand("DELETE  tbKisiler where id=" + ID, conn);
            kmt.ExecuteNonQuery();
            conn.Close();
        }

Silmek istediğimiz satırın ID sini yollayarak bu satırı silme işlemini gerçekleştirmiş oluyoruz. ID bilgisi normalde integer bir değer fakat string den int e convert işlemleri ile uğraşmamak için kolaylık olması açısından bu şekilde kullandım, Şuan ID zaten DataGridView den alındığı için sıkıntı yok fakat eğer bunu kullanıcı girecekse kontrolünün yapılmasında fayda var.

 

TABLO ÇEKME İŞLEMİ İÇİN

        public DataTable TabloyuGetir()
        {
            sqlcontrol();
            conn.Open();
            SqlDataAdapter adap = new SqlDataAdapter("select id,ad,soyad,tel from tbKisiler", conn);
            DataTable tbl = new DataTable();
            adap.Fill(tbl);
            conn.Close();
            return tbl;
        }

Tabloyu çekerken isterseniz hangi verilerin çekileceğini de ayarlayabilirsiniz, Fonksiyona istenen kolonlar yollanır ve bu kolonları SELECT cümlesine yerleştirerek istediğiniz kolonların çekilmesini de yapabilirsiniz, Bunu uygulamada kullanmadım ama bunu uygulamak isteyip de takılan olursa SORU-CEVAP bölümünden takıldığı yerleri sorabilir,

SQL class ımızı hazırladık, şimdi sıra bunları nasıl çağırıp kullanacağımıza geldi. Form içerisinde ilk olarak bu class dan bir nesne oluşturmamız gerekiyor.

        SQLclass SQL = new SQLclass();
        public Form1()
        {
            InitializeComponent();
            DataGridYenile();

        }    

 

Şeklinde kod satırımıza yazıyoruz. Artık SQL isminde SQl işlemleri için kullanacağımız bir nesnemiz mevcut. Şimdi butonlardan kendi işlevleri için gerekli olan fonksiyonu çağırıp kullanacağız. Öncelikle DataGridView e verileri çekmek için bir fonksiyon yazdım, bu fonksiyonun içerisinde SQL nesnesinden TabloGetir fonksiyonu ile tabloyu çekip DataGridView e atama yaptırıyoruz.

        public void DataGridYenile()
        {
            dataGridView1.DataSource = SQL.TabloyuGetir();
        }

Form başlarken de bu fonksiyonu çağırarak açılır açılmaz verilerin DataGridView e aktarılmasını sağladık.

Yeni satır eklemek için TextBox ları doldurup YENİ EKLE butonuna bastığımızda çalışacak kod şu şekilde

        private void buttonYeniEkle_Click(object sender, EventArgs e)
        {
            SQL.YeniSatirEkle(textBoxAD.Text, textBoxSOYAD.Text, textBoxTEL.Text);
            DataGridYenile();
        }

 Eklenecek veriler SQL nesnesine yollanıyor ve ardından son hali için yenileme fonksiyonu çağırılıyor.

Seçili satırı güncellemek için TextBox ları düzenleyip SEÇİLİYİ DÜZENLE butonuna bastığımızda çalışacak kod şu şekilde

        private void buttonDuzenle_Click(object sender, EventArgs e)
        {
            string ID = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value.ToString();
            SQL.SatiriGuncelle(ID, textBoxAD.Text, textBoxSOYAD.Text, textBoxTEL.Text);
            DataGridYenile();
        }

 

DataGridView den silmek istediğimiz satırı seçip SEÇİLİYİ SİL butonuna bastığımızda ise çalışacak olan kod

        private void buttonSil_Click(object sender, EventArgs e)
        {
            DialogResult Secim = new DialogResult();  
            Secim = MessageBox.Show("Seçili satırı silmek istediğinizden emin misiniz", "www.Farukunal.net", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
 
            if (Secim == DialogResult.Yes)
            {
                string ID = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[0].Value.ToString();
                SQL.SatiriSil(ID);
                DataGridYenile();
            }
        }

 

Şeklinde olacaktır. Silme işlemini yapmadan önce kullanıcıya işlemi onaylamak isteyip istemediğini sordurmak için de DialogResult kullandım. Eğer yanlışlıkla silme butonuna basmışsa direk silme yaomasın ve kullanıcıdan onay alsın istedim.

Ayrıca DataGridView de Mouse ile yada klavye ile satır değiştirdiğinizde textbox lara seçili olan satır bilgilerinin aktarılması için de

        public void satirDegisti()
        {
            textBoxAD.Text = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[1].Value.ToString();
            textBoxSOYAD.Text = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[2].Value.ToString();
            textBoxTEL.Text = dataGridView1.Rows[dataGridView1.CurrentRow.Index].Cells[3].Value.ToString();
        }

Bu şekilde bir fonksiyon yazdım, Bu fonksiyonu DataGridView in MouseUp ve KeyUp işlemlerinden çağırarak satır değiştiğinde TextBox ların da yenilenmesi işlemini sağlamış olduk

        private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
        {
            satirDegisti();
        }
 
        private void dataGridView1_MouseUp(object sender, MouseEventArgs e)
        {
            satirDegisti();
        }

 

//ÖRNEK PROJE İNDİR




Diğer Yazılarımdan Seçmeler...