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.
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.
Ş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.
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?
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ı.
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
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.
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