C# Veritabanı Ekleme-Silme-Listeleme-Güncelleme İşlemleri

Bu yazımızda c# ile Access Veritabanı kullanarak veri tabanına ekleme,silme,güncelleme ve listeleme işlemlerini yapacağız.Elimden geldiğince kısa ve anlaşılır anlatmaya çalışacağım.

Veritabanı dosyamızı debug klasörünün yani uygulamamızın .exe sinin oldugu klasorue koyuyoruz.Veritabanı şu şekildeolacak

acs

Visual Studıo da Form Tasarım ekranında formumuza

-3 adet textbox

-3 adet label

-3 adet button

-1 adet datagridview

Ekliyor ve tasarımı düzenliyoruz.Ben bu şekilde yaptım siz istediğinizgibi yapın

2

C# da veritabanı kullanabilmek için öncelikle en süt kısıma

[csharp]

using System.Data.OleDb;
using System.Data;
using System.IO;

[/csharp]

Satırlarını ekliyoruz.Veritabanına ekleme ve silme işlemleri ile güncelleme ve listeleme işlemleri birbirinden farklıdır.Ekleme-Silme olayları tek adımda biter.Güncelleme ve listeleme daha farklıdır.

Daha sonra veritabanı bağlantımız için şunları tanımlıyoruz bu fonksiyonu Global alana ekleyin.

[csharp]

     OleDbConnection baglanti;

public void baglan()

       {

           baglanti= newOleDbConnection();

           baglanti.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Directory.GetCurrentDirectory()+"\<strong>db.accdb</strong>";

           if (baglanti.State == ConnectionState.Closed)

           {

               baglanti.Open();

           }

         }

[/csharp]

Yukarıdaki kısmı tek tek anlatmaya gerek yok baglanti adında bir connection nesnesi tanımlıyor ve bu nesnenın connectionstring özellıgı ıle veritabanı hakkında bilgi veriyoruz.İf blogunda ise veritabanı bağlantısı kapalı mı bakıyor Kapalı ise bağlantıyı açıyoruz. Burada önemli olan kısım baglanti.ConnectionString in en sonundakı db.accdb dir.Sizin veritabanı dosyanızın adı ne ise bunu onunla değiştirin.

Bağlantıyı kapatmak için de bir fonksiyon tanımlayalım.Bu fonksıyon if blogu ile bağlantı kapalı değilse baglantıyı kapatır.Veritabanına sürekli olarak bağlı kalma performans ve güvenlik için tehlikelidir.

[csharp]

       public void baglanti_kapat()

       {

           if (baglanti.State != ConnectionState.Closed)

          {

               baglanti.Close();

           }

       }

[/csharp]

Veritabanına EKLEME yapma

Kullanılacak nesneler: OledbCommand dur.

Kaydet butonun Tıklıyor ve kod ekranımzdaki kaydet butonun click olayına şunları yazıyoruz.

[csharp]

       private void button1_Click(object sender, EventArgs e)

       {

           baglan();

           string sqlkomutu = "INSERT INTO KisiTBL (ad,soyad,telefon) VALUES(‘" + textBox1.Text + "’,’" + textBox2.Text + "’,’" + textBox3.Text + "’)";

           OleDbCommand komut = newOleDbCommand(sqlkomutu, baglanti);

           komut.ExecuteNonQuery();

           baglanti_kapat();

       }

[/csharp]

Burada öncelikle veritabanı dosyasına bağlanmak için baglan() fonksıyonunu çağırıyoruz.baglan() fonksıyonunu kendimiz yukarıda tanımlamıştık.Daha sonra veritabanında işlem yapabilmek için sql sorgu komutumuzu bir string e kaydediyoruz.Sonra oledbCommand nesnesi oluşturup bu nesnede hangi komutu kullancaksak biz string sqlkomutu adlı değişkeni yazıp hangi baglantıyı kullancaksa yazıyoruz.Daha sonra executenonquery komutu ile komut nesnesnini çalıştırıyoruz.En sonda ise işimizbittiği için veritabanından bağlantımızı kapatıyoruz.

Veritabanından Listeleme Yapmak

Listeleme için datagridview nesnesi kullanacağız.Üstelik her ekleme,silme ve güncelleme işleminden sonra listenin yenilenmesi gerekecek bu yüzden Listelemeyi bir fonksıyon haline getirip.Ekleme –silme ve güncelleme olayından sonra bu fonkısyonu çağıtacağız ve datagridview listenin en güncel hali listelenecek

[csharp]

     public void listele()

       {        

           baglan();

           string sorgu = "select * from KisiTBL";

           OleDbCommand komut = newOleDbCommand(sorgu, baglanti);

           OleDbDataReader okuyucu = komut.ExecuteReader();

           DataTable dt = newDataTable();

           dt.Load(okuyucu);

           dataGridView1.DataSource = dt;

           baglanti_kapat();

       }

[/csharp]

Bu fonksiyonu nerede çağırırsak o zaman veritabanındakı en güncel bilgileri datagridview yükler.Ekleme –silme –güncelleme işlemleri bittikten sonra datagridview deki bilgilerinin güncellemesin için listele() fonksıyonunu çağırmlayız.Ayrıca form yüklenirken de yani açılırken da listele() fonksıyonunu çağıacarıgz.

[csharp]

       private void Form1_Load(object sender, EventArgs e)

       {

           listele();

       }

[/csharp]

VERİTABANINDAN SİLME İŞLEMİ

Veritabanından silme güncelleme işlemi için öncelikle hangi kayıt üzerinde işlem yapcağız bunun belirlenmesi lazım.Yani ahmet in mi mehmet in mi hangi kişinin kaydınıı silecğiz yada güncelleyeceğiz.

Bunun için datagridview den seçtiğimiz kişnini bilgilerinin yukarıdakı textboxlara aktarılması lazım.Ayrıca veritabanında her kişinin kendine özgü Kimlik numarası vardır.Yani 2 kişi de adı aynı olabilir 2 tane Muhammed KOYUNCU olabilir ancak her kişinin kimlik numarası fakrlıdır.Bu yüzden bu işelmlerde ayırt edici olarak Kimlik alanını kullanacağız.Yani sql komutumuz KİMLİK numarası 2 olan kişiyi sil yada KİMLİK numarası 2 olan kişinni adını MUHAMMED yap şeklinde olacaktır.

Datagridview den seçtiğimiz kişinin bilgilerini almak için Öncelikle Datagridview nesnesnin Properties dan SelectionMode özellğini FullRowSelect yapıyoruz.daha sonra Datagridviewin event pencresinden CellClick ine tıklayın

3

Çıkan ekranı şu şekilde yapın

[csharp]

       public string Kimlik;

       private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

       {

           Kimlik = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();

           textBox1.Text = dataGridView1.SelectedRows[0].Cells[1].Value.ToString();

           textBox2.Text = dataGridView1.SelectedRows[0].Cells[2].Value.ToString();

           textBox3.Text = dataGridView1.SelectedRows[0].Cells[3].Value.ToString();

       }

   }

[/csharp]

Bu olay datagridview den her satır seçtiğinizde yenilenir.Yani datagridviewdeki kişiyi seçtiğinizde Kimlik adlı stringe seçtiğiniz satırdaki ilk değeri textboxlara da sırayla değerleri aktarır.

4

Gördüğünüz gibi artık datagridviw den seçtiğimiz kişininbilgileri textboxlara aktarılıyor.

VERİTABANINDAN SİLME VE GÜNCELLEME İŞLEMİ

Sql sorgumuz Kimlik no su 2 olanı sil veya Kimlik nosu 2 olnaının soyadını akgül yap şeklinde olacaktır

SİL butonuna Tıklıyor ve click eventına gelıyoruz

[csharp]

       private void button2_Click(object sender, EventArgs e)

       {

           if (Kimlik==null)

           {

               return;

           }

           baglan();

           string sqlkomutu = "DELETE * FROM KisiTBL WHERE Kimlik="+Kimlik+"";

           OleDbCommand komut = newOleDbCommand(sqlkomutu, baglanti);

           komut.ExecuteNonQuery();

           baglanti_kapat();

           listele();

           textBox1.Clear();

           textBox2.Clear();

           textBox3.Clear();

       }

[/csharp]

Burda ise eğer kimlik değeri boşise yani data gridviewden bir şey seçilmediyse return ile geri dönüyoruz.Daha sonra ise tıpkı ekleme işlemi gibi.Ayrıca en sonda textboxları temizliyoruz.

VERİ TABANI GÜNCELLEME İŞLEMİ

Güncelleme butonuna tıklayıp clikc olayına şunları yazıyoruz

[csharp]    

private void button3_Click(object sender, EventArgs e)

       {

           if (Kimlik == null || textBox1.Text == null || textBox2.Text == null || textBox3.Text == null)

           {

              return;

           }

           baglan();

           string sqlkomutu = "UPDATE KisiTBL SET ad=’"+textBox1.Text+"’,soyad=’"+textBox2.Text+"’,telefon=’"+textBox3.Text+"’ Where Kimlik=" + Kimlik + "";

           OleDbCommand komut = newOleDbCommand(sqlkomutu, baglanti);

           komut.ExecuteNonQuery();

           baglanti_kapat();

           listele();

           textBox1.Clear();

           textBox2.Clear();

           textBox3.Clear();

       }

[/csharp]

Burada ise öncelikle textbox ve kimlik değernini boş olup olmadıgna bakılıyor ve boş ise return ile geri dönülüyor

Evet Ekleme,Silme-Günlceleme,Listeleme işlemleri bu kadar.bir sonraki yazımda bu işlemleri Class ile yapmayı göstereceğim.Class ile yaparken çok daha az kod ile işlemlerimizi halledeceğiz.

Sorunlarınız için yorum atarsanız yardımcı olabilirim.

 

Yorum yapın