C# ve MySQL Bağlantısı
| 19.08.2008 @ 23:09 |
5112 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.
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 |
|
|
Yorum Yazabilmeniz İçin Giriş Yapmanız yada Üye Olmanız Gerekmektedir.
|
- Haberler
- Programlar
- Forumlar
|