C# ile MySql Bağlantı

İhtiyaç olunca kullanmak zorunda kalıyor insan. Buraya da not almakta fayda var. MySQL ile uzun yıllar önce yaptığım bir uygulamaya admin arayüzünü C# ile desktop’a almam gerekti. Buna benzer kullandığınız host yada kişisel veritabanınızla ortak veri alışverişi yapmak için zaman zaman MySQL-C# ikilisini kullanmak gerekebiliyor.

Kullanmaya başlamadan önce yüklü gelmeyen MySQL Driver için Connector/Net ‘i aşağıdaki linkten indirmemiz ve kurmamız gerekiyor.

http://dev.mysql.com/downloads/connector/net/

Projemize Add Reference diyerek .NET sekmesine giriyor ve MySql.Data referansını bularak ekliyoruz.

Daha sonra kullanım için uygulamamız içinden referansları çağırıyoruz;

1
2
using MySql.Data;
using MySql.Data.MySqlClient;

Güncel bağlantılar için genelde connectionstrings.com ‘a hep göz atarım. Gene öyle yaptım;

https://www.connectionstrings.com/mysql/

2 tip bağlantı şeklini de server’ımızın hata verip vermeme durumuna göre kullanabiliriz;

1
2
3
4
5
// Bu bir
public MySqlConnection mysqlbaglan= new MySqlConnection("Server=localhost;Database=hmustak;Uid=fake;Pwd='';");
 
// Bu da iki
public MySqlConnection mysqlbaglan= new MySqlConnection("Server=localhost;Database=hmustak;Uid=fake;Pwd='';Encrypt=false;AllowUserVariables=True;UseCompression=True");

Sonra yandaki resimde de göreceğiniz gibi veritabanına bağlanabileceğim 5 bilginin dinamik girişini sağlamak üzere textbox koydum. Bağlantı için gereken herşeyi buradan çekmeyi düşünüyorum.

Ek olarak en alta 2 adet textbox daha koyduğumu göreceksiniz. O textboxlarda gönderdiğim connection string’in son halini ve dönecek olan olası hataları görüntülemek istedim. Kod içinde textbox6 ve 7 de bunları göreceksiniz.

İşlemi ayrı bir class içinde yaptığım için o class’a DB.cs ismini verdim. İçeriği şöyle;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class DB
{
 
    MySqlConnection baglanti;
 
    public bool baglanti_kontrol()
    {
 
        try{
            baglanti = new MySqlConnection("Server="+Form1.IP+";Database="+ Form1.DBase +";Uid="+ Form1.User +";Pwd="+ Form1.Pass + ";SslMode=none");     //public MySqlConnection mysqlbaglan= new MySqlConnection("Server=localhost;Database=blog;Uid=root;Pwd='';Encrypt=false;AllowUserVariables=True;UseCompression=True");
            baglanti.Open();
            return true;                //Veritabanına bağlanırsa baglanti_kontrol fonksiyonu "true" değeri gönderecek
        }
        catch (Exception err){
            Form1.Mesaj = err.Message;
            Form1.Hata = "Server=" + Form1.IP + ";Database=" + Form1.DBase + ";Uid=" + Form1.User + ";Pwd=" + Form1.Pass + ";";
            return false;               //Veritabanına bağlanamazsa "false" değeri dönecek
        }//catch
    }//bool baglanti_kontrol()
 
}//class

Anaform altındaki yapı ve event’lar da aşağıdaki gibi yazıldı;

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
public partial class Form1 : Form
   {
       public static String Mesaj;
       public static String Hata;
       public static String IP;
       public static String Port;
       public static String User;
       public static String Pass;
       public static String DBase;
 
       public Form1()
       {
           InitializeComponent();
       }
 
       private void button1_Click(object sender, EventArgs e)
       {
           IP = this.textBox1.Text;
           Port = this.textBox2.Text;
           User = this.textBox3.Text;
           Pass = this.textBox4.Text;
           DBase = this.textBox5.Text;
           textBox6.Text = "";
           textBox7.Text = "";
 
           //this.Text = "Bağlanıyor...";
 
           DB _vt = new DB();
 
           if (_vt.baglanti_kontrol() == true){
               MessageBox.Show("Bağlantı kuruldu..!","Başardın..!");
               this.Text = "Bağlantı kuruldu.";
           }
           else{
               //this.Text = "Hata !!!";
               textBox6.Text = Mesaj;
               textBox7.Text = "Hata:"+Hata;
           }
       }
 
       private void Form1_KeyUp(object sender, KeyEventArgs e)
       {
 
       }
 
       private void textBox6_DoubleClick(object sender, EventArgs e)
       {
           textBox6.SelectAll();
       }
   }

Kişisel kullanım için basit bir araç.

Hakan Müştak @2018

 


Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

question razz sad evil exclaim smile redface biggrin surprised eek confused cool lol mad twisted rolleyes wink idea arrow neutral cry mrgreen

*

Captcha Kontrolü * Zaman aşımı, sayfayı tekrar yükleyin