Most popular

วันเสาร์ที่ 9 พฤษภาคม พ.ศ. 2558

.Net 4.5 ใช้งาน mySQL 5.6 ผ่าน DataSet(.xsd)

     ห่างจาก mysql ไปพอสมควร ในชีวิตนี้ก็ใช้ mysql มาตั้งแต่เริ่มเข้าวงการ นึกย้อนไปก็ตั้งแต่ mysql 3.23 โน่นแหนะ จำได้ว่าพอกรโดนมา Version 5 ก็มีปัญหากับภาษาไทยทำให้สะดุดไปพักนึก ไปๆมาๆ ก็ไปซุกอยู่ในอ้อมกอดของ Oracle ซะงั้น วันนี้มีน้องๆบอกว่า mysql เค้าพัฒนาแล้ว เข้าถึงโดนผ่าน ADO DataSet ได้แล้ว เลยต้องมาทดสอบกันหน่อย หลังจากที่เขียนครั้งล่าสุดก็เมื่อสักปีกว่าๆ ได้แล้ว ตอนนั้นผมใช้ Version 5.5 ถ้าจำไม่ผิด ต้องติดตั้ง mysql Connection for .net เอง และถ้าอยากสบายก็เขียนเป็น Data Class แบบ EJB ของ Java คอยจัดการเอา
     แต่มาวันนี้ mysql 5.6 ติดตั้งทีเดียวแบบจัดเต็ม ได้ Provider มาครบพร้อมใช้ เป็นอีกก้าวหนึ่งที่ Oracle เข้าไปเจาะ Microsoft ตรงๆ

ติดตั้ง mysql แล้วมาครบเลย
ก่อนอื่นมาเช็ค Version กันก่อน โดยผมจะ Query ผ่าน Mysql Workbench ด้วยคำสั่ง "SELECT @@version"

จากนั้นก็เข้าไปทดสอบที่ Visual Studio ได้เลย ซึ่งผมใช้ Version 2013 ครับ
พอเข้ามา new project ก็จะพบกับหัวข้อเฉพาะของ project สำหรับ mysql เลยครับ


จากนั้นจะมี Dialog ให้ใส่ข้อมูลเพื่อ Connect Database ในที่นี้ผมใช้ฐานข้อมูลชื่อ mysqltest เข้าถึงโดย root


จากนั้นผมจะเลือกการทำงานกับฐานข้อมูลแบบ Dataset จากนั้นให้กดปุ่ม Next เพื่อไปเลือกตาราง ในที่นี้ผมเลือกใช้ตาราง province เพื่อดึงข้อมูลรายชื่อจังหวัด


จากนั้น Visual Studio จะสร้างไฟล์ให้เราหลายไฟล์ โดยจะมีฟอร์มหลัก(frmMain) ฟอร์มที่ใช้จัดการกับตาราง province (frmprovince)

จะเห็นว่าในฟอร์มหลักจะมีเมนูเพื่อเปิดฟอร์มที่ใช้จัดการตาราง province ให้ด้วย
เมื่อรันโปรแกรม
หน้าตาของไฟล์ .xsd DataSet ที่ได้ ไม่ต่างจากที่ใช้กับ Microsoft SQL Server เลย
แต่มีจุดสังเกตุอย่างหนึ่งว่าฟอร์ม frmprovince ที่ Visual Studio สร้างให้นั้นเป็นเพียงการ Generate code ธรรมดา โดยใช้ Namespace MySql.Data.MySqlClient เท่านั้น

private void frmprovince_Load(object sender, EventArgs e)
{
string strConn = "port=xxx;server=localhost;user id=root;password=xxx;database=mysqltest;";
ad = new MySqlDataAdapter("select * from `province`", strConn);
MySqlCommandBuilder builder = new MySqlCommandBuilder(ad);
ad.Fill(this.newDataSet.province);
ad.DeleteCommand = builder.GetDeleteCommand();
ad.UpdateCommand = builder.GetUpdateCommand();
ad.InsertCommand = builder.GetInsertCommand();
MySqlDataAdapter ad3;
}

แต่เจตนาของผมอยากใช้ผ่าน DataSet ไฟล์ .xsd ผมจึงต้องเรียกใช้  TableAdapter ตามภาพ



จากนั้นผมจะลองทดสอบการดึงข้อมูลจากตาราง province ดูว่าเราจะใช้ได้ปกติไหม โดยที่ผมจะเขียน Code C# ที่ฟอร์มหลัก(frmMain) ดังนี้

public frmMain()
{
            InitializeComponent();

            NewDataSet DS = new NewDataSet();
            new province1TableAdapter().Fill(DS.province1);

            DataGridView dgv = new DataGridView();
            dgv.DataSource = DS.province1;
            dgv.Dock = DockStyle.Fill;
            this.Controls.Add(dgv);
}

เมื่อรันโปรแกรมข้อมูลจากตาราง province จะแสดงใน DataGridView ตามภาพด้านล่าง


สรุป
     ผมขอสรุปเบื้องต้นว่าการใช้งานสำหรับผู้ที่อยากจะใช้ .Net กับ mySQL นั้นสะดวกขึ้นอย่างมาก แต่อาจจะยังไม่เนียนสนิทเหมือนใช้กับ SQL Server ที่ผมพบก็คือการ Insert จะไม่มีชื่อของ Field มาให้เราเห็น Visual Studio จะมองเห็นเป็นแค่ parameter ตัวที่เท่าไหร่และ type เท่านั้น แต่ในความคิดของผมแค่นี้ก็ดีถมถืดแล้วครับ




รับวางระบบงาน ระบบ Network และพัฒนาระบบ Data warehouse และ ERP ด้วยทีมงานที่มีประสบการณ์ ติดต่อได้ที่ e-mail : arrays2003@hotmail.com

ไม่มีความคิดเห็น:

แสดงความคิดเห็น