Tuesday, December 20

C# connect MySQL via MySQL connector/NET

บ่อยครั้ง ที่เราไม่ได้เลือกใช้ Data base ของค่ายไมโครซอฟท์ แต่เราเลือกที่จะติดต่อกับฐานข้อมูล ของค่ายอื่น ด้วยเหตุผลบางประการ ในกรณี เราต้องเช็คดูว่า Visual C# ของเรามี Class ที่รองรับการเชื่อมต่อดาต้าเบส ค่ายนั้นๆ หรือไม่ หากไม่ได้มี Class รองรับการเชื่อมต่อฐานข้อมูลค่ายนั้นๆ ไว้แล้ว เราต้องมองหา ตัวเลือกอื่นๆ วันนี้ เรามาดูตัวอย่างในการทำให้โปรแกรม Visual C# เชือมต่อกับ MySQL ผ่าน MySQL Connector/NET

เริ่มจาก ดาวน์โหลด MySQL connector/NET ก่อน เอาเวอร์ชั่น ล่าสุดก็ได้ครับ แต่ในขณะนี้ ผมเลือกเวอร์ชั่น Connector/Net 6.4.4

ทำการติดตั้งไฟล์ เหมือนโปรแกรม อื่นๆ ทั่วไป ครับ ในที่นี้ ผมเลือกแบบ Complete กด Next กดไปเรื่อยๆ จนโปรแกรมติดตั้งเสร็จ

มาถึงจุดนี้ อย่างแรกที่เราต้องตกลงกันก่อน ก็คือ คุณจะต้องมี

  • ดาต้าเบส MySQL ที่ติดตั้งไว้แล้ว และสามารถเชื่อมต่อฐานข้อมูลได้อย่างไม่มีปัญหา (เช็คจากโปรแกรมอื่น เรียบร้อยแล้ว)
  • โปรแกรม Visual C# 2008 express ที่ติดตั้งไว้แล้ว

สร้างโปรเจค Windows Form Application ตั้งชื่อตามใจชอบ ในที่นี้ ผมตั้งชื่อเป็น MySQL_connection_test

สร้างโปรเจค Windows Form  

จากนั้นให้ทำการ Add reference เข้ามาที่โปรเจคของเราก่อน เพื่อเป็นการดึง Library dll ของ CMySQL เข้ามาใช้งานกับโปรเจคของเรา ไปที่เมนู Project –> Add reference ทีแท๊ป NET เลือนลงมาหา MySql.Data แล้วกด OK

Add reference เพื่อดึงไฟล์ dll เข้ามาร่วมด้วย

กลับมาที่หน้า Form ทำการสร้างปุ่ม button ลงบน Form จากนั้น ทำการกำหนด Event ให้กับปุ่ม ดับเบิลคลิกเข้าไปที่ปุ่ม แล้ว เขียนโค๊ด

สร้างปุ่มบน Form

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data;
using MySql.Data.MySqlClient;

namespace MySQL_connection_test
{
    public partial class Form1 : Form
    {
        MySql.Data.MySqlClient.MySqlConnection conn;
        string myConnectionString = "server=localhost;uid=root;pwd=merlin;database=test;";

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                conn = new MySql.Data.MySqlClient.MySqlConnection();
                conn.ConnectionString = myConnectionString;
                conn.Open();
                MessageBox.Show(conn.State.ToString());
                conn.Close();
                conn.Dispose();
            }
            catch (MySql.Data.MySqlClient.MySqlException ex)
            {
                MessageBox.Show(ex.Message);
            }

        }
    }
}

สิ่งที่ต้องเพิ่มเข้าไปคือ อ้างถึง namespace ของ Mysql.Data

using MySql.Data;
using MySql.Data.MySqlClient;

ทำการสร้างออปเจค และสร้าง ตัวแปรสตริง เพื่อเป็นค่ากำหนดค่าของออปเจค

MySql.Data.MySqlClient.MySqlConnection conn; 
string myConnectionString = "server=localhost;uid=root;pwd=merlin;database=test;";

รูปแบบของสตริง ประกอบไปด้วยคีย์เวิร์ด key=value แต่ละคีย์เวิร์ด แยกกันด้วยเครื่องหมายเซมิโคล่อน “ ; ”

  • server=localhost // กำหนดที่อยู่ของ server ของฐานข้อมูล ในกรณีเชื่อมต่อเครื่องเราเอง
  • uid=root // ชื่อของ user ที่ทำการเชื่อมต่อ ในที่นี้ผมได้กำหนดเป็น root
  • pwd=merlin // พาสเวิร์ดของ root ที่ทำการเชื่อมต่อ
  • database=test // ชื่อฐานข้อมูล

ทดลองรันดูครับ กดไปที่ปุ่มที่เราสร้างไว้ จะปรากฏ messagebox แจ้งให้ทราบว่า สถานะการเชื่อมต่อของเรากับฐานข้อมูล ถูกเปิด แล้ว แสดงว่า เราสามารถที่จะติดต่อกับฐานข้อมูลได้สำเร็จ

ทดสอบการรัน การติดต่อ MySQL ผ่าน mysql connector 

ถ้ายังทำไม่ได้ พยายามแก้ไข เช็คเรื่องการเชื่อมต่อฐานข้อมูลก่อน ว่าสามารถเชื่อมต่อด้วย use/password นี้ ได้จริงๆ ไหม ด้วยโปรแกรมการเชื่อมต่อตัวอื่น เช่น MySqlFront หรือ phpmyadmin เพื่อให้แน่ใจว่า myConnectionString ถูกต้องแล้ว

เพื่อนๆ สามารถศึกษาเพิ่มเติมได้ ตามคู่มือ ที่อยู่ในโฟลเดอร์ที่ได้ติดตั้งไว้แล้ว

อ่านเพิ่มเติม...
 

แจกฟรี พื้นที่ฝากไฟล์ 2 GB

ads

ติดตามข่าวสารผ่าน Twitter

ติดตาม Blog นี้

About Me

My photo

สวัสดีครับ ชื่อเปิ้ลนะครับ ถ้ามีอะไรให้ช่วยเหลือได้ ก็จะช่วยครับ
ผมได้สร้างบล๊อกไว้ เพื่อเก็บรวบรวมความรู้ และประสบการณ์ในการทำงานครับ แวะไปเยี่ยมชมกันได้ครับ http://mechacity.blogspot.com และบล๊อก http://faker-programmer.blogspot.com ครับ

Blog อื่นๆของฉัน

จำนวนการเยี่ยมชมบล๊อก