C# ile MySql
by Ersin on Jul.29, 2007, under C#
ADO .NET in esnek ve becerikli yapısı Mysqlde işlem yaparken de bize kolaylık sağlamakta. Burada, yeni özelliklerinden dolayı (trigger,transaction,stored procedure vb) Mysql5 versiyonunu baz alarak anlatacağım. Bu arada mysql i indirip kurduğunuzu farz ederek anlatıyorum.
Mysql veritabanına bağlanabilmek ve üzerinde işlem yapabilmek için öncelikle .NET Connector ü indirip kurmanız gerekiyor.
Connectoru kurduktan sonra Visual Studioyu açarak bir Console uygulaması (MysqlTest) oluşturalım. Burada Mysql connectoru hangi klasöre kurduysanız, Visual Studio da Project>Add Reference den Browse ile o klasör içerisindeki “Mysql.Data.dll” i projeye eklemeniz gerekmekte. Daha sonra aşağıdaki kodları deneyebilirsiniz.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 using System;
using System.Collections.Generic;
using System.Text;
//mysql kütüphanelerimizi yüklüyoruz
using MySql.Data;
using MySql.Data.MySqlClient;
namespace MysqlTest
{
class Program
{
MySqlConnection baglanti; // bağlantı nesnemiz
MySqlDataReader okuyucu; // okuyucu nesnemiz
MySqlCommand komut; // komut nesnemiz
public Program()
{
baglanti = new MySqlConnection
("server=localhost;database=test;user=root;password=;");
}
public void basla()
{
Console.WriteLine("Mysql test uygulaması başlatıldı...");
try
{
baglanti.Open();
Console.WriteLine("Bağlantı açıldı...");
Console.WriteLine("Veritabanları listeleniyor...");
this.komutCalistir("show databases");
Console.WriteLine("İşlem başarıyla tamamlandı...");
Console.ReadLine();
}
catch (MySqlException myex)
{
Console.WriteLine("Veritabanına bağlanamadı.Hata sebebi:");
Console.WriteLine(myex.Message);
Console.ReadLine();
}
}
public void komutCalistir(string komut)
{
this.komut = new MySqlCommand(komut, baglanti);
okuyucu = this.komut.ExecuteReader();
this.oku(okuyucu);
}
private void oku(MySqlDataReader sonuc)
{
try
{
while (sonuc.Read())
{
Console.WriteLine(sonuc[0].ToString());
}
sonuc.Close();
}
catch (MySqlException me)
{
Console.WriteLine(me.Message);
}
finally
{
baglanti.Close();
}
}
static void Main(string[] args)
{
Program Test = new Program();
Test.basla();
}
}
}
Bu test uygulaması ile veritabanına bağlanarak veritabanlarını listelemekteyiz. Gördüğünüz gibi çok fazla çaba sarf etmeden Mysql üzerinde de rahatlıkla işlem yapabilmekteyiz. Tabi bunun en büyük rolü, başta da belirttiğim gibi ADO üstleniyor. Umarım bu kısa yazı C# ile Mysql giriş için iyi bir örnek olmuştur sizin için.

August 28th, 2007 on 01:41
Başlangıç için güzel bir örnek. Ben projelerimde veritabanı olarak MySQL kullanıyorum. Bir başkasının da C# ve MySQL işbirlikteliğini kullanması çok hoşuma gitti. Bu konuda kendimi biraz yalnız hissediyordum hep. Kimse sorsam “Biz C# ve MSSQL kullanıyoruz” diyordu. Siz hiç MySQL in kendi sitesinde yayınladığı .NET Connector ile yine aynı işi yapan MySQLDriverCS (açık kaynak kodlu bir proje)’i karşılaştırdınız mı? Özellikle de internet üzerinden kullanılan veritabanları ile bir hız denemesi yapma imkanınız oldu mu? Ben veri tabanı bağlantı aracı olarak MySQLDriverCS kullanıyorum ve internet üzerinden (bantgenişliği uygun olmasına rağmen) saniyede 4-5 kb yi geçtiğini görmedim.
August 29th, 2007 on 08:29
Şimdi birincisi resmi sürücüleri kullanmak bana daha mantıklı geldi bir de ADO
yapısına uygun olması sebebiyle tercih ettim .NET Connector u, bir başka sebep
(uygulamayı Linuxda da kullanmak istediğim için), her iki platformda da çalışabilecek bir uygulama
yapmak istemem de tercihimde rol oynayan diğer bir faktör.İkisi arasında bir
karşılaştırma yapmadım ve web uygulamasında henüz kullanmadım. Masaüstü
uygulamasında kullandım ve hızı gayet iyiydi MsSql e göre. Tamam MsSql e göre
eksiği olabilir ama kesinlikle yerine tercih edilebilir. Örneğin veritabanına ilk
bağlanma süreleri arasında dağlar kadar fark var, ilk sorguyu çalıştırdığı
süreler arasında da, bu hız farkı hep hissettiriyor kendini hele birde 1 GB altında RAM iniz varsa.
October 24th, 2009 on 17:10
Aynı şekilde uzaktaki bir mysql sunucusuna bağlanmaya çalıştığımda
Host ‘makinamın o anki ipsi’ is not allowed to connected this MySQL server
hatasını alıyorum acaba sebebi nedir?
December 6th, 2009 on 00:05
Normal kurulmda mysql birçok hosta bağlanmaya izin verir. Ama eğer var olan mysql server böyle bir hata veriyor ise MysqlAdministrator gibi bir program ile herhangi bir hostdan gelen bağlantıyı kabul eden bir kullanıcı oluşturabilirsiniz. Ya da komut satırından (mysql console)
mysql> CREATE USER ‘kullanici’@'%’ IDENTIFIED BY ’sifre’;
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘kullanici’@'%’
-> WITH GRANT OPTION;
komutları ile kullanıcı oluşturabilir ve bu kullanıcı ile bağlanabilirsiniz. Cevap geciktiği için kusura bakmayın, geç fark ettim mesajınızı.
January 11th, 2010 on 03:05
Merhaba, bunu başka bilgisayarda kullanmaya çalıştığımda hata alıyorum, farklı farklı bilgisayarlarda kullanmak için ne yapmalıyız ? Hepsinin bu connector u yüklemesi gerekiyor mu ? Sadece bu dll i programın kurulduğu klasöre kopyalasak oradan çağırsak olmaz mı ? Bunun çözümü nedir
January 12th, 2010 on 22:25
Mysql connectorun indirme sayfasında hem executable dosya vardır hem de zip dosyası. Zip dosyasını indirip bir yere açın. Bu klasör içerisindeki Mysql.Data.dll dosyasını oluşturduğunuz projenin bin klasörüne (ya da kendinizce uygun gördüğünüz bir klasöre) kopyalayın.
Visual Studio da “Project” bölmünde “Add Reference” e tıklayın çıkan ekranda “Browse” sekmesinde “Mysql.Data.dll” dosyasını bulup “OK” ile tamamlayın. Bundan sonra uygulamanız derlendiğinde exe dosyası ile birlikte Mysql.Data.dll dosyasını da beraber taşımanız durumunda diğer bilgisayarlarda connector kurdurma derdiniz olmayacak.
January 12th, 2010 on 23:07
Birşeyi es geçmiş olabilirim, diğer bilgisayarda çalışmaz ise Mysql.Data.dll i şu komut ile kaydettirin
%WINDIR%\Microsoft.net\Framework\v2.0.50727\regasm Mysql.Data.dll