Embedded SQL Server (Compact Edition) เขียนเมื่อ 2009.09.04 โดย

เมื่อไม่สองสามวันก่อนต้องเขียนโปรแกรมขนาดเล็ก เป็นโปรแกรมที่ควรมีฐานข้อมูลแต่ต้องติดตั้งและใช้งานได้ไม่ยาก จึงคิดที่จะใช้งาน Embedded Database ซึ่งที่นิยมใช้ก็จะมี 2 vendors คือ
  • MS SQL Server Compact Edition
  • PostgreSQL Embedded Engine
สุดท้ายตัดสินใจใช้ SQL Server CE จึงเอาวิธีการใช้งานมาแปะไว้ เผื่อวันหน้าลืม

ณ วันที่เขียนนี้มี SQL Server CE โดยมีให้เลือกใช้ 3 version คือ
  • MS SQL Server Compact 3.1
  • MS SQL Server Compact 3.5
  • MS SQL Server Compact 3.5 SP1
ในที่นี้เลือกใช้เวอร์ชั่น 3.1 เพื่อที่จะได้เปิดดูด้วย MS SQL Server Management Studio 2005 ได้ (เวอร์ชั้น >3.5 SSMS 2005 ยังไม่รู้จัก)

การจะใช้งานก็เริ่มจากต้องติดตั้ง Library ก่อนเลือก Download ได้ที่ http://www.microsoft.com/sqlserver/2005/en/us/compact-downloads.aspx ตามเวอร์ชั่ที่ต้องการ

การนำเอาไปใช้งานก็ง่ายๆ ใน Project ของเราก็ทำการ Add Reference ไปที่ System.Data.SqlServerCe
จากนั้นก็เรียกใช้ใน project ด้วย
using System.Data.SqlServerCe;

ก่อนอื่นเราต้องสร้างฐานข้อมูลก่อนด้วย
SqlCeEngine engine = new SqlCeEngine("Data Source='test.db'; LCID=1033; Password=\"strong_password\"; Encrypt = TRUE;");
engine.CreateDatabase();

จากโค๊ดข้างบนเราสร้าง object SqlCeEngine เพื่อเป็นตัวสร้างฐานข้อมูล โดยระบุ parameter เป็น connection string โดยต้องระบุ ชื่อฐานข้อมูล จะเป็นนามสกุลอะไรก็ได้ Locale ID ในที่นี้ใช้ 1033 เพื่อใช้กับชุดอักขระ Latin ถ้าใช้กับภาษาไทยก็ 1054 และก็ password ในการเข้าถึงฐานข้อมูล จากนั้นก็เรียกใช้คำสั่ง CreateDatabase เพื่อสร้างฐานข้อมูล

การใช้งานก็เหมือน ADO.Net ทั่วไป เริ่มจากสร้าง connection
SqlCeConnection conn = new SqlCeConnection("Data Source='test.db'; Password=\"strong_password\"");

การ Execute command ก็ใช้ SqlCeCommand
SqlCeConnection conn = new SqlCeConnection("Data Source='test.db'; Password=\"strong_password\"");
SqlCeCommand cmd = new SqlCeCommand("INSERT INTO ....", conn);

ส่วนการ query ก็เรียกใช้ SqlCeDataAdapter ได้เช่นกัน
SqlCeConnection conn = new SqlCeConnection("Data Source='test.db'; Password=\"strong_password\"");
SqlCeDataAdapter da = new SqlCeDataAdapter("SELECT ....", conn);
DataTable dt = new DataTable();

เสร็จแล้วก็สั่ง Close connection เท่านั้น การใช้งาน SQL Server CE ช่วยให้ Application ขนาดเล็กไม่ต้องติดตั้ง SQL Server หรือแม้กระทั่ง Desktop Engine ทำให้ความซับซ้อนของการติดตั้งลดลงไปอย่างมาก แต่ก็มีข้อจำกัดของตัวเองเช่น ไม่มีความสามารถ concurrent connection ถ้าต้องการใช้ก็ต้องเขียน server คอยจัดการ connection เอง, ไม่มี transaction และ Data Type บางตัว การเลือกใช้ต้องคำนึงถึงข้อจำกัดเหล่านี้ด้วยนะครับ



คำเตือนคำเตือน เนื้อหาต่างๆ ในบทความ รวมถึงรูปภาพทั้งหมดในบทความนี้ เป็นความเห็นส่วนตัวของผู้เขียนแต่ละคน ซึ่งแต่ละคนได้ทำการลงทะเบียน และเขียนบทความลงใน Modoeye Articles นี้โดยไม่มีค่าธรรมเนียมใดๆ บทความเหล่านี้เป้าหมายเพื่อการศึกษา และความบันเทิงเท่านั้น การนำส่วนหนึ่งส่วนใดของบทความไปใช้งาน ควรทำการอ้างอิงถึงผู้เขียนและแหล่งที่มาด้วย