C# MySQL Sorgu Gönderme

Merhabalar C# derslerimize kaldığımız yerden devam ediyoruz. Bu dersimizde MySQL veritabanına sorgu göndermeyi anlatacağım. Sorgu göndermekten kastım, veri ekleme, silme ve güncelleme işlemleri için gönderdiğimiz sorgular, yani geriye herhangi bir cevap beklemediğimiz sorgulardır. Veritabanında herhangi bir işlem yapabilmemiz için elbette öncelikle veritabanına bağlanmamız gerek, daha önce C# ile MySQL veritabanına bağlanmayı anlatmıştık, o yazıma buraya tıklayarak ulaşabilirsiniz. Öncelikle veritabanına bağlanabilmek için, bağlantı işlemlerini yapan sınıfın yani MySqlConnection sınıfının yeni bir nesnesini türetelim.
MySqlConnection baglanti = new MySqlConnection("server=localhost; uid=root; pwd=; database=deneme");
Burada server ile sunucumuzun bulunduğu adres, uid ile veritabanına giriş yaparken kullandığımız kullanıcı adını, pwd ile veritabanı şifresi ve database ile de veritabanı adını belirttik ve bu bilgilere göre bağlantı yapacağız. C# ile Mysql veritabanı işlemleri yapabilmek için veritabanına bağlanmamız gerek ve biz bağlantıyı yapacak sınıfın yeni bir nesnesini türettik fakat henüz bu nesneyi kullanarak bağlantı yapmadık. Hadi veritabanına şöyle bir bağlanalım, bakalım ne var ne yok 🙂
baglanti.Open();
Veritabanına sorgu göndermek için MySqlCommand sınıfı kullanılmakta ve bu sınıfında tıpkı MySqlConnection sınıfında olduğu gibi yeni bir nesnesini türetmemiz gerekiyor. Constructor metoduna (yani sınıf türetirken parametre olarak) string tipte sorgu cümlemizi ve MySqlConnection tipinde bağlantı bilgilerini tutan nesneyi göndermemiz gerek. Örneğin kullanicilar isimli tablosundaki tüm bilgileri sileceksek örnek kodumuz şöyle olmalı;
MysqlCommand komut = new MysqlCommand("delete from kullanicilar", baglanti);
Evet veritabanına sorguyu gönderecek sınıfımızı türettik fakat henüz veritabanında bu sorguyu çalıştırmadık, yani sorgumuz henüz veritabanına ulaşmadı. O işi de komut nesnesi altında bulunan ExecuteNonQuery() fonksiyonu ile yapacağız.
komut.ExecuteNonQuery();
Bu fonksiyon herhangi bir parametre almıyor ve geriye int tipinde değer döndürüyor ve bu dönen değer ile veritabanında kaç satırın etkilendiğini öğrenebiliriz. Buraya kadar veritabanına bağlandık, sorguyu gönderip çalıştırdık fakat bağlantımız açık kaldı. Her ne kadar veritabanı ile herhangi bir veri alışverişi olmayacak olsada bağlantıyı kapatalım ki RAM’de tutulan alan boşaltılsın ve bir sonraki veritabanına işlemlerimize olanak sağlansın. Tabi bağlantıyı Open() fonksiyonu ile yaptıysak, bağlantı kapatmayıda Close() fonksiyonu ile yapacağız.
baglanti.Close();
Yalnız unutmamamız gereken bir nokta var ki çok büyük önem arz ediyor. Bağlantıyı açtığımızda sadece bir tane işlem yapabiliriz. Yani bağlantıyı açacak, işlemimizi yapacağız ve sonra bağlantıyı kapatacağız. İkinci bir işlem yapmak istediğimiz bağlantıyı tekrardan açacağız. Ben bir kere bağlantıyı açayım, tüm işler bitince kapatırım diye düşünüyorsanız, ne yazıkki ikinci denemede hata alacaksınız. Çünkü bir bağlantı ile bir işlem yapılabilmekte. Sanırım anlaşılabilmişimdir 🙂
Bu dersimizde bu kadardı, yazdığımız kodları daha toplu olması için aşağıya bırakıyorum;
MysqlConnection baglanti = new MysqlConnection("server=localhost; uid=root; pwd=; database=deneme;");
baglanti.Open();
MysqlCommand komut = new MysqlCommand("delete from kullanicilar", baglanti);
komut.ExecuteNonQuery();
baglanti.Close();
Tüm C# derslerimize buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.