29 Jul

C# ile MySql

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.

7 thoughts on “C# ile MySql

  1. 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.

  2. Ş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.

  3. 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?

  4. 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ı.

  5. 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 🙂

  6. 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.

  7. 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

Comments are closed.