http://www.rifatterzi.com C Sharp Class ile Sql Bağlantısı ve Sorguları Kullanımı Merhaba, bu yazımda sizlere başlıkta da belirtmiş olduğum gibi C Sharp class yapısıyla Sql bağlantısı ve sorgualrının nasıl yapılacağını ve bunların nerede kullanılabileceğiyle ilgili örnek vererek anlatmaya çalışacağım. Lafı fazla uzatmadan örnek üzerinden öncelikle class yapımızı inceleyelim: “veritabani.cs” adında bir class oluşturalım. using using using using System; System.Collections.Generic; System.Linq; System.Text; namespace sqlDataBase { public class veritabani { /* Sql bağlantısı için gerekli olan sınıfımızı tanımlıyoruz. */ private SqlConnection con; /* baglan() adında bir fonksiyon ile sql bağlantımızı gerçekleştireceğimiz bir fonksiyon oluşturmuş oluyoruz. */ private SqlConnection baglan() { /* Sql bağlantı cümlemiz. Sql Connection String olarak ifade edilir. */ con = new SqlConnection("Data Source=RIFATTERZI;Initial Catalog=sqlDllDeneme;Integrated Security=True"); try { /* Sql bağlantımızı başlatan fonksiyonu çağırıyoruz. */ con.Open(); } catch { //Hata } return con; } /* islemYap() fonksiyonumuzla database işlemlerini yaptıracağız. * Fonksiyonumuz sql adında bir string ifade alarak çalışacaktır. * Bu fonksiyon SqlCommand tipinde bir değer döndürecektir. */ public SqlCommand islemYap(string sql) { /* Bir SqlCommand yani komut oluşturuyoruz. * İçerisine fonksiyonumuzu çağırdığımızda gönderdiğimiz sql satırımız(insert, updade gibi) * ve baglan() yani işlemi yapacağımız veri tabanımızı ekliyoruz. */ SqlCommand com = new SqlCommand(sql, baglan()); /* Bu satırda ise komutumuzu çalıştırıyoruz. * İşlem yukarda değil bu satırda gerçekleşmektedir. */ com.ExecuteNonQuery(); /* Burada da SqlCommandımızı fonksiyonumuzu çağırdığımız yere gönderiyoruz. */ return com; } /* Burada veritabanımızda bulunan tablolarımızdan satır çekme işlemini yapıyoruz. * Burada da yukarıdaki fonksiyonumuz gibi sql adında bir string alarak işlem yapıyoruz. * Geriye döndüreceğimiz değer ise DataRow olacak. */ public DataRow satirCek(string sql) http://www.rifatterzi.com { /* Bir SqlDataAdapter oluşturuyoruz. */ SqlDataAdapter adap = new SqlDataAdapter(sql, baglan()); /* Ardından bir DataSet oluşturup * SqlDataAdapter nesnemizi DataSetimize yerleştiriyoruz. */ DataSet ds = new DataSet(); adap.Fill(ds); /* Burada ise DataSet içerinindeki ilk tablomuzun ilk satırını geri döndürüyoruz. */ return ds.Tables[0].Rows[0]; } /* Burada veri tabanımızdak ibilgileri tablo şeklinde çekiyoruz. * Burada da sql adında bir sorgu cümlesi alıyoruz. * Geriye DataTable döndürüyoruz. */ public DataTable tabloCek(string sql) { /* Yukarıdaki şekilde SqlDataAdapter ve DataSetlerimizi oluşturup dolduruyoruz. */ SqlDataAdapter adap = new SqlDataAdapter(sql, baglan()); DataSet ds = new DataSet(); adap.Fill(ds); /* Burada yukarıdaki satır döndürme fonksiyonumuzdan faklı oalrak * bu sefer satırı değil de DataSet içerisindeki ilk tabloyu geri döndürüyoruz. */ return ds.Tables[0]; } /* return işlemlerimizden sonra kapatma işlemimizi yapamadığımızdan dolayı * kapat adında bir fonksiyon tanımlayarak açmış olduğumuz veri tabanımızı * kapatma işlemimizi yapacağız. */ public SqlConnection kapat() { try { /* Bağlantımızı kapatacak fonksiyonu çağırıyoruz. */ con.Close(); } catch { //Hata } return con; } /* Not: Burada ben kapat() foknsiyonumuzu dışarıdan çağıracak şekilde yaptım fakat sizler * benim gibi yapmayıp isterseniz burada fonksiyonları private yaparak public yeni fonksiyonlar tanımlayıp * bu fonksiyonlarda kapatma işlemini de gerçekleştirebilirsiniz. */ } } http://www.rifatterzi.com Class yapımızı oluşturduğumuza göre artık veri tabanımızda bu class ile işlem yapabiliriz. Uygulamamıza Geçip class ile işlemlerimizi yapalım: “frmDeneme” adında bir form oluşturalım. Şekil 1 : Form Ekran Çıktısı using using using using using using using using using System; System.Collections.Generic; System.ComponentModel; System.Data; System.Data.SqlClient; System.Drawing; System.Linq; System.Text; System.Windows.Forms; namespace sqlDataBase { public partial class frmDeneme : Form { public frmDeneme() { InitializeComponent(); } /* Burada class ile bir nesne oluşruyoruz. * int secildi_id = -1; ise tabloda seçilen kişinin id değerini alacak değişkenimiz. * -1 verilmesi ise henüz seçilmediğini belirleyebilmemizi sağlayacak. */ veritabani sql = new veritabani(); int secili_id = -1; private void frmDeneme_Load(object sender, EventArgs e) { /* Uygulamamız ilk açıldığında tabloyu doldur fonksiyonumuzu çağırıyoruz. */ tabloyu_doldur(); } /* tabloyu_doldur() fonksiyonumuz formumuzda bulunan * dtAdSoyad(dataGridwiev) nesnemizi dolduracak fonksiyondur. * fonksiyon olarak yazılmasının sebebi birden fazla yerde kullanılacak olmasıdır. */ private void tabloyu_doldur() { /* Öncelikle biraz try{}, catch{} ve fianlly{} bölümlerinden bahsedeyim. * try{} bölümü işlemlerin yapıldığı hata ayıklama bölümüdür. * catch{} bölümü hatanın yakalandığında kullanılan bölümdür ve * (SqlException sqlEx) ise yakalanan hatanın sqlEx 'e atılmasını sağlar. * bu sayede sqlEx.Message ile verilen hatayı alabiliriz. http://www.rifatterzi.com * finally{} bölümü ise try{} catch{} işleminin bitiminde çalışan bölümdür. * Bubölüm her durumda çalışır. Bu yüzden veritabanımızıda burada kapatıyoruz. */ try { /* Class içerisinde yazmış olduğumuz tabloCek(string sql) fonksiyonumuzu * çağırıp tablomuzu çekiyoruz ve dtAdSoyad(dataGrid) tablomuzun içerisine * çektiğimiz tabloyu yerleştiriyoruz. * sql.tabloCek yazmamızın nedeni ise class yapımızı sql yukarıda adında * projemize dahil etmemizdir. */ dtAdSoad.DataSource = sql.tabloCek("select * from tblKisi"); } catch (SqlException sqlEx) { /* Hatayı ekrana bastırıyoruz. */ MessageBox.Show(sqlEx.Message); } finally { sql.kapat(); } /* Tablomuzu yenileme ihtiyacı duyduğumuzda formumuzu da boşaltmamız gerekir. * Eski bilgilerin formda durması pek mantıklı değildir. Bu sebeple form_temizle() * fonksiyonumuzu çağırıp formumuzu temizliyoruz. */ form_temizle(); } /* Kaydet butonu tıklandığı zaman yapılacak işlemler. */ private void btnKaydet_Click(object sender, EventArgs e) { try { /* Bir veri eklemek için islemYap(string sql) fonksiyonumuzu kullanacağız. * Bu fonksiyonu aşağıdaki gibi sorgumuzu içerisine yerleştirdiğimizde class * içerisinde yazmış olduğumuz fonksiyon kişiyi eklemiş olacaktır. */ sql.islemYap("insert into tblKisi values('" + txtAd.Text + "','" + txtSoyad.Text + "')"); } catch (SqlException sqlEx) { MessageBox.Show(sqlEx.Message); } finally { sql.kapat(); } /* Tablomuzda artık bir kişi daha var ve bu kişiyi görebilmek için * tablomuzu yeniden dolduruyoruz. */ tabloyu_doldur(); } private void btnGuncelle_Click(object sender, EventArgs e) { /* Eğer tablomuzdan bir kişi seçilmediyse diye kontrol ediyoruz * Seçilmemişse mesaj verip işlem yapmadan çıkıyoruz. */ if (secili_id < 0) { MessageBox.Show("Lütfen bir kullanıcı seçiniz.", "Hata!"); return; } try { sql.islemYap("update tblKisi set ad='" + txtAd.Text + "',soyad='" + txtSoyad.Text + "' where id="+secili_id); http://www.rifatterzi.com } catch (SqlException sqlEx) { MessageBox.Show(sqlEx.Message); } finally { sql.kapat(); } tabloyu_doldur(); } private void btnSil_Click(object sender, EventArgs e) { if (secili_id < 0) { MessageBox.Show("Lütfen bir kullanıcı seçiniz.", "Hata!"); return; } try { sql.islemYap("delete from tblKisi where id="+secili_id); } catch (SqlException sqlEx) { MessageBox.Show(sqlEx.Message); } finally { sql.kapat(); } tabloyu_doldur(); } /* dtAdSoyad(dataGrid) eventlerimizden CellClick Eventimizin içerisine yani * tabloda bir hücre seçtiğimiz zaman gerçekleşecek olayda yapacaklarımızı * buraya yazıyoruz. */ private void dtAdSoad_CellClick(object sender, DataGridViewCellEventArgs e) { /* (int) integer değere dönüştürmeye yarar. * CurrentRow Seçili satırı verir. * Cells["id"] ile id sütununu alırsınız. * Value ise bize değeri verir. * Kısaca seçili satırdaki id değerini al diyoruz. * Başta yazdığımız (int) ile de bu değeri integer olarak alıyoruz.*/ secili_id = (int)dtAdSoad.CurrentRow.Cells["id"].Value; /* Burada değişik oalrak (int) yerine sonda gelen ToString() var. * Bu ise değeri string olarak almamıza yaramaktadır. */ txtAd.Text = dtAdSoad.CurrentRow.Cells["ad"].Value.ToString(); txtSoyad.Text = dtAdSoad.CurrentRow.Cells["soyad"].Value.ToString(); /* Eğer bir kişi seçildiyse alttaki alana bu kişinin istediğimiz * bilgisini yazdıralım. */ if (secili_id>-1) { /* Burada da son fonksiyonumuz olan * satirCek(string sql) fonksiyonumuzu kullanacağız. * burada dikkat çeken özellik fonksiyonsonunda bulunan ["ad"] kısmıdır. * burada çektiğimiz satırın hangi sütünundaki değeri alacağımızı yazıyoruz. * ["ad"] yazan yerde sorgumda belirttiğim id'ye sahip kişinin adını bana verecektir. */ lblSeciliKisi.Text = "Datagrid'de şuanda seçili olan kişi: " + http://www.rifatterzi.com sql.satirCek("select * from tblKisi where id="+secili_id)["ad"].ToString() + " " + sql.satirCek("select * from tblKisi where id="+secili_id)["soyad"].ToString(); } } /* Ekranımızdaki formumuzu temizler. */ private void form_temizle() { /* txtAd.Clear() txtAd yazı kutumuzun içerisini temizler. */ txtAd.Clear(); txtSoyad.Clear(); } /* Not: Temel c#(CSharp) kurallarını bildiğiniz var sayılarak hazırlanmış bir anlatımdır. * http://www.rifatterzi.com */ } } Yararlı olması dileğiyle, kolay gelsin.
© Copyright 2024 Paperzz