Ana Sayfa Haberler Yazılımlar Dersler Forumlar Reklam

C# ve MySQL Bağlantısı

19.08.2008 @ 23:09
711 kere okundu, 0 yorum yazildi.


Bu derste, Microsoft'un geliştirmiş olduğu .Net teknolojisi ile açık kaynak kodlu olarak dağıtılan MySql VTYS programına nasıl bağlantı kuracağımızı anlatacağım.

Neden MySql ve Neden C#?

MySql çünkü esnek, kullanışlı ve performanslı. İnternet'ten indirip rahatlıkla kişisel bilgisayarınıza kurup denemelerini gerçekleştirebilirsiniz. İşletim sisteminden tamamen bağımsız olup son kullanıcının tüm ihtiyaçlarına karşılık oldukça performanslı olarak yanıt vermektedir. Aslında bir hafif ve hızlı uçakta diyebiliriz. Her ne kadar bir çok ücretli rakipleri olsa da onlardan eksiği olduğu söylenemez.

C# çünkü Microsoft’un son zamanlarda yaptığı en iyi şeylerden birisi. Hızlı geliştirme ve hafıza taşmalarına gibi sorunlara karşı aldığı önlemler nedeniyle oldukça gözde olarak kullanılmaktadır. Aynı zamanda kurumsal uygulamalarda tercih edilmesi programcıları kendine çekmektedir.  Microsoft’un Visual Studio’suna karşılık olarak ücretsiz olarak dağıtılan Mono ile istediğiniz İşletim sisteminde rahatlıkla yazılım geliştirebilirsiniz.

Son olarak neden MySql ile C# sorusunu sorduğunuzu duyar gibiyim. Bunun nedeni her iki yazılımdan performans ve kullanışlılık açısından diğer ürünlere göre daha ilerde olmasından dolayı çok iyi bir ikilik oluşturuyor. C# ile MsSql Server daha iyi değil mi sorusunu duyar gibiyim. Bu sorunun yanıtı hem evet hem de hayır olarak cevaplayabilirim.

Evet; çünkü her ikisi de aynı firmanın ürünleridir ve teknik olarak daha iyi çalışmaktadırlar.

Hayır; çünkü gerçek hayatta her şey performans ve maddiyata dayanmaktadır. Ortak kullanım için geliştirdiğiniz bir otomasyonunuz olduğunu var sayalım. Bu otomasyonda sürekli olarak işlemler yapılarak bunların bir veritabanında saklanması gerektiğini var sayalım. Bu durumda en iyi çözüm Unix tabanlı bir işletim sistemi ve üzerinde çalışan performanslı bir VTYS olacaktır.

Diğer bir önemli seçim sebebi MySql ve C#’in hem Unix tabanlı hem de Windows’ta kullanılabilmesidir (C# ne yazık ki birebir olarak kullanılmamaktadır. Ayrıca düzenleme ve derleme gerekmektedir). Yani önceden sunucu için Windows kullanmış olabilirsiniz ama sonradan Unix tabanlı sisteme geçemeyeceğiniz anlamına gelmez.

Öncelikle gerekli olan malzemelerin listesine bir göz atalım.

Mysql - Buradan indirebilirsiniz.

MySQLDriverCS - Buradan indirebilirsiniz.


Visual C# 2008 Express Edition -  Buradan indirebilirsiniz.


Gerekli olan programları kurduktan sonra yeni bir proje açıyoruz. Ben deneme için Consol projesi oluşturdum.
 
C:\Program Files\MySQLDriverCS\dll klasörünün içinde bulunan libmySQL-4.0.dll ve libmySQL.dll adlı dosyaları c:\windows\system32\ klasörüne kopyalayın.

MySQLDriverCS.dll isimli dosyayı projenizin içinde bulunan Bin\Debug\ klasörünün içine kopyalayın.
 
Sıra artık dll dosyamızı programımızın içinde kullanabilmek için projeye eklemeye geldi.


Add Reference’ye tıklayın.

Karşınıza gelen pencereden Browse’ye tıklayın

Debug klasöründeki MySQLDriverCS.dll isimli dosyayı seçin.

Eğer ekleme işlemini yapmazsanız programınız ile MySql’e bağlantı kuramazsınız.


Herhangi bir hata mesajı vermediğini var sayarak devam ediyorum.

Kullanmak istediğimiz un  en üstünde bulunan namespace yani isim alanı tanımlama bölümüne using MySQLDriverCS; satırını ekleyin. Bu satır ile daha önceden içeri aktardığımız DLL dosyasındaki özellikleri kullanıma açmış oluyoruz.

Şimdi MySql sunucumuza bağlantı kuralım. (Sonunda dediğini duyar gibiyim)

Bunun için ben bir fonksiyon tanımlayacağım. Kodum şu şekilde.

public MySQLConnection baglanti = null; //asıl bağlantı değişkenimiz
public bool bagli = false; // bağlantı kontrol değişkenimiz
public bool baglantikur() //bağlantı için kullandığımız fonksiyon
{
    if (bagli == false)
    {
        try
        {
            baglanti = new MySQLConnection(new MySQLConnectionString("localhost", "veritabani", "root", "sifre").AsString);
            baglanti.Open();
            bagli = true;
        }
        catch(Exception)
        {
            bagli = false;
        }
    }
    return bagli;
}

Kodumuzu Çözümlüyoruz

Baglanti adlı değişken Mysql ile aramızdakı bağlantıda kullanıcaz. İlerleyen yazıda sql sorgularımızı kullanırken sürekli olarak bu değişkeni kullanıcaz. Mysql’e asıl bağlanan nesnedir.

Bagli adlı değişken ise bizim kontrol değişkenimiz. Mysql ile başlantı kurulu olup olmadığını kontrol ettiriyoruz. Eğer önceden bağlantı kurulmuş ise sonradan tekrar bağlantı kurmamızı engelliyor. Aynı zamanda sonradan bağlantının olup olmadığını kontrol etmemize yardımcı olacaktır.

Baglantikur fonksiyonunu programımız içerisinde herhangibir yerden mysql sunucusna bağlantı kurmak isteğimizde sorunsuz olarak bağlanmamız için tanımladım. Yani aynı kodu sürekli olarak yazarak zaman kaybını önlemiş olduk.


new MySQLConnection(new MySQLConnectionString("localhost", "veritabani", "root", "sifre").AsString);

baglanti.Open();



Kod satırını anlatmaya fazla gerek yok. Sunucu, veritabanı adı, kullanıcı adı ve şifre bilgileri ayarlanıp sonrasına bağlantı açılıyor. İç kısımda ki MySQLConnectionString ile bağlantıda kullanılan değişkenleri daha düzenli ve basit bir şekilde tanımlamamıza yardımcı oluyor.

bagli = baglantiyikur();
if (bagli == true)
{
    MySQLCommand komut1= new MySQLCommand("delete from tablo1 where alan = '11' limit 1",baglanti);
    komut1.ExecuteNonQuery();
}

Önceden tanımladığımız baglantikur fonksiyonunu çağırarak sucusu ile bağlantı kuruluyor. Bağlantının kurulup kurulmadığı kontrol ediliyor.
Sonradan komut1 adlı değişken tanımlanıp komutumuz işleniyor. komut1.ExecuteNonQuery(); ilede komutumuz çalıştırılıyor.

bagli = baglantiyikur();
if (bagli == true)
{
    MySQLDataAdapter komut2 = new MySQLDataAdapter("select a,b,c from tablo", baglanti);
    DataSet set = new DataSet();
    komut2.Fill(set);

    for(int i = 0; i < set.Tables[0].Rows.Count; i++)
        Console.WriteLine(set.Tables[0].Rows[i][0].ToString());
}

Yine aynı şekilde baglantikur fonksiyonu çağrılıyor. Fakat bundan öncekine göre birkaç farklılık var. Öncelikle bundan MysqlDataAdapter objesini kullandık. Bunun nedeni dönen bir değeri daha kolay ve rahat bir şekilde programımızda kullanabilmemiz içindir. Aynı zamanda sql komutumuzdan geriye dönen değerleri okuyabilmek için DataSet kullandık. Tabii sizler bunun yerine başka nesnelerde kullanabilirsiniz.

komut2.Fill(set); ile komut2 içerisindeki alanlar daha doğrusu dönen değerlerin tamamı set isimli değişkene yüklenmiştir. DataSet’in yapısı gereği içerisinde tablolar ve satırlar kulunmakdatır. Dönen değerlerde aynı şekilde bir tabloda ve onun altında bulunan satırlarda tutulmaktadır. set.Tables[0].Rows.Count ile set değişkenimizin içerisinde bulunan tablomuzun toplam satır yani dönen bilgi sayısını bize vermektedir. Burdaki Table[0] bize set içerisindeki ilk tablonun içeriği üzerinde işlemler yapılacağını belirtmektedir. Bu da demek oluyorki Table bir array yani dizi olarak kullanılmaktadır. Yanına ayrıca tablolar tanımlanabilir vede kullanılabilir.

set.Tables[0].Rows[i][0] satırındaki i ile satırın numarası sırası ile içeriği alınmakdatır. Ondan sonra gelen [0] ise geri dönen alanlarlardan a alanını işaret etmektedir. Eğer onun yerine set.Tables[0].Rows[i][1] yazmış olsaydık 2. alanımız yani b alanının içeriği ekrana yazdırılmış olacaktı.

C# işe mysql bağlantısında kullanabileceğiniz daha bir çok fonksiyon bulunmaktadır. Onlarıda isteğe bağlı olarak kullanabilirsiniz. Anlatılanlar ilk bağlantı kurulumu ve basit sql sorgularının program içerisinde kullanımını anlatmakdatır.
Yazan:
Erhan Baris
0.0
Toplam Oy Sayisi: 0
AddThis Social Bookmark Button
  • Yorumlar       
Yorum Bulunamadi!
  • Yorum Yaz       
Yorum Yazabilmeniz İçin Giriş Yapmanız yada Üye Olmanız Gerekmektedir.
Rumuz:

Guvenlik Kodu
Yorumunuz:
[b] [/b] ile kalinlik, [i] [/i] ile yatiklik ve [u] [/u] ile alticizik kelimeler ekleyebilirsiniz.
Örnek ;[b]Blicca[/b] [i]Bilgi[/i] [u]Sitesi[/u]
Bu site Firefox uyumlu olarak geliştirilmektedir.
Blicca ©