MySQL ตอนที่ 3 : Windows Store Apps กับ MySQL ข้าม Host หรือ Server (C#)
MySQL ตอนที่ 3 : Windows Store Apps กับ MySQL ข้าม Host หรือ Server (C#) การเขียน Windows Store Apps ติดต่อกับ MySQL แบบข้ามเครื่องหรือข้าม Server/Host เป็นเทางเลือกหนึ่งในการสร้าง Application ที่ติดต่อกับ Database ซึ่งสามารถข้าม Server ได้ทั้ง Network ที่อยู่ใน Intranet Local (Lan/Wan) หรือ WWW (Internet) ได้ แต่มีข้อจำกัดว่าจะต้องมีการอนุญาติให้เชื่อมต่อผ่าน Port : 3306 และฝั่งของ MySQL จะต้องเพิ่ม IP ของเครื่องที่จะเชื่อมต่อ หรือจะใช้ % สำหรับการอนุญาติให้ทุก ๆ เครื่อง สามารถติดต่อได้อย่างอิสระ
ข้อกำหนดในการเชื่อมต่อ MySQL ระหว่าง Server
เครื่องที่ติดตั้งหรือรัน App และ MySQL Server สามารถติดต่อสื่อสารกันได้ผ่านระบบ Lan หรือ Internet
MySQL Database เครื่องที่เป็น Server จะต้อง Allow Port 3306 และ Network ของ Apps ก็ 3306 เช่นเดียวกัน
กำหนด Host สำหรับ User เป็น IP ของเครื่อง Client หรือจะใช้ % สำหรับเครื่องใด ๆ ก็ได้ (ปกติเป็น localhost)
สรุปก็คือ MySQL ทำงานใน Port Default เป็น 3306 และ User สำหรับเชื่อมต่อจะต้องกำหนดเป็น IP หรือ %
นส่วนของ Host ให้เปลี่ยนเป็น IP ของ Client ที่จะเชื่อมต่อ หรือจะใช้เป็น % (ปกติจะเป็น localhost) และสามารถเพิ่มได้หลาย ๆ IP
ตัวอย่างการ Config บน Server จริง
โครงสร้างของ Table และ Data
CREATE TABLE `member` (
`ID` int(2) NOT NULL auto_increment,
`Name` varchar(50) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
INSERT INTO `member` VALUES (1, 'Weerachai Nukitram');
INSERT INTO `member` VALUES (2, 'Adisorn Boonsong');
INSERT INTO `member` VALUES (3, 'Surachai Sirisart');
ข้อมูลใน Table
การปรับแต่ง Config เพื่อเขียน Windows Store Apps และติดต่อกับ MySQL Database บน Host Server (Direct Admin)
บน Direct Admin ให้เลือก Create new Database
หลังจากได้ Database ให้คลิกที่ Database นั้น ๆ
จะเห็นว่าตอนนี้มี User ชื่อว่า thaiwin_onlinedb ซึ่งจะ Connect ภายใต้ localhost คือเรียกได้เฉพาะในเครื่องเท่านั้น เราสามารถเพิ่ม IP ของ Client ที่ต้องการจะเชื่อมต่อได้
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.Devices.Geolocation;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Core;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using System.Text;
using MySql.Data.MySqlClient;
// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=234238
namespace WindowsStoreApps
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
///
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string strConnection = "server=122.155.17.251;database=thaiwin_onlinedb;uid=thaiwin_onlinedb;password=0bHmoCs3;";
using (MySqlConnection connection = new MySqlConnection(strConnection))
{
connection.Open();
StringBuilder sb = new StringBuilder();
MySqlCommand cmd = new MySqlCommand("SELECT * FROM member", connection);
using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
sb.AppendLine(reader.GetString("Name"));
}
}
this.lblResult.Text = sb.ToString();
}
}
}
}
Screenshot
แสดงข้อมูลของ MySQL บน Windows Store Apps ที่อยู่บน Host และ Server ผ่านระบบ Internet