C#Pocket PC Programming ตอนที่ 4-2 เขียนโปรแกรมจัดการฐานข้อมูล SQL SERVER CE

Posted 20/01/2008 23:54
by deltaflyer
คะแนนนิยม

ก่อนอื่นต้องกล่าวสวัสดีกับคุณผู้อ่านทุกท่านครับฉบับนี้ผมจะขอแนะนำการเขียนโปรแกรมบนเครื่อง Pocket PC เพื่อทำการเชื่อมต่อกับฐานข้อมูล SQL Server CE ต่อจากฉบับที่แล้วนะครับ ซึ่งในฉบับที่ผมได้พูดถึงคุณสมบัติ ข้อจำกัดต่างๆ ของ SQL Server CE ไปแล้ว พร้อมทั้งวิธีการติดตั้งจนถึงเขียนโปรแกรมเพื่อทำการเชื่อมต่อกับ ฐานข้อมูลและการสร้างฐานข้อมูลอย่างง่ายๆไปแล้ว สำหรับฉบับนี้ผมจะขอพูดถึงการทำงานกับระบบฐานข้อมูลโดยใช้ Microsoft SQL Server CE query Analyzer และ การเขียนโปรแกรมเพื่อใช้คำสั่ง DML ครับ เพื่อไม่ให้เสียเวลาเรามาเข้าเรื่องเลยดีกว่า

SQL Server CE Query Analyzer

สำหรับท่านที่เคยเขียนโปรแกรมที่ใช้งานร่วมกับ Microsoft SQL Server บนเครื่อง PC คงจะคุ้นเคยกับเครื่องมือที่ชื่อ Query Analyzer กันอยู่แล้ว พอมาถึงเวอร์ชั่น SQL Server CE นี้ Microsoft ก็ไม่ลืมที่จะสร้าง Tools ตัวนี้ ติดมาให้ด้วย
SQL Server CE Query Analyzer เป็นโปรแกรมที่ช่วยให้เราสามารถจัดการฐานข้อมูลได้ทาง GUI เช่น การสร้างไฟล์ฐานข้อมูล, การสร้าง, ลบ, แก้ไขตาราง, การทำการ compact/Repair และอื่นๆ

ซึ่ง SQL Server CE Query Analyzer ตัวนี้นั้นจะถูกทำการติดตั้งให้เองอัตโนมัติเมื่อเราทำการติดตั้ง (หรือ Deploy โปรแกรมที่เราเขียนขึ้นในครั้งแรก) ด้วย Visual Studio.NET 2003 เราสามารถเรียกโปรแกรมนี้ได้ที่ Start menu à Programs ครับ

การสร้างฐานข้อมูลและตารางด้วย SQL Server CE Query Analyzer

เมื่อเราเปิดโปรแกรมขึ้นมาจะพบกับหน้าตาดังรูปที่ 1

clip_image003
clip_image004

รูปที่ 1 หน้าจอหลักของ SQL CE Query Analyzer (1.bmp) รูปที่ 2 การเชื่อมต่อกับ Database (2.bmp)

ในที่นี้จะขอพูดถึงการสร้างฐานข้อมูลและการสร้างตารางเท่านั้น รายละเอียดเรื่อง SQL CE Query Analyzer สามารถอ่านได้ใน SQL CE Book Online ครับ

ใน Tab objects เป็น tab ที่เอาไว้ทำงานกับฐานข้อมูลที่อยู่ในเครื่องโดยมีรายละเอียดดังนี้ครับ

หมายเลข 1 จะเป็นรายชื่อฐานข้อมูลที่มีอยู่ในเครื่องเรา

หมายเลข 2 เป็น Icon สำหรับสั่งให้โปรแกรมติดต่อกับฐานข้อมูล

วิธีการสร้างและเชื่อมต่อกับฐานข้อมูล

1. ให้คลิกที่ Icon หมายเลข 2 จะปรากฏหน้าจอดังรูปที่ 2 ในหน้าจอนี้จะเป็นการทำการติดต่อไปยังฐานข้อมูล

2. เราต้องการสร้างฐานข้อมูลใหม่ ให้คลิกที่ปุ่ม New Database จะปรากฏหน้าจอดังรูปที่ 3

3. ให้เราเลือก path โดยค่า Default ของโปรแกรมจะเก็บไฟล์ฐานข้อมูลเอาที่ /My Documents จากนั้นพิพม์ชื่อไฟล์ฐานข้อมูลที่ต้องการสร้างหากต้องการกำหนด Password ให้กับฐานข้อมูลก็ให้ใส่ password ที่ต้องการลงไปในช่อง password

4.

clip_image007
clip_image008

หากเราต้องการให้ฐานข้อมูลเรามีการเข้ารหัสด้วยก็ให้เช็คที่ Encrypt ด้วยจากนั้นคลิกที่ปุ่ม Create เราก็จะได้ฐานข้อมูลใหม่ของเราออกมาดังรูปที่ 4

รูปที่ 3 การสร้างฐานข้อมูลใหม่ (3.bmp) รูปที่ 4 ฐานข้อมูลที่สร้างเสร็จแล้ว (4.bmp)

วิธีการสร้างตารางให้กับฐานข้อมูล

สมมุติว่าเราต้องการสร้างตารางเพื่อเก็บข้อมูลหนังสือชื่อตารางว่า Book_Table มี column 3 column ชื่อ Book_id(int), Book_Name(nvarchar) และ Book_Details(nvarchar) โดย Book_Id จะทำหน้าที่เป็น Primary Key และเพิ่มค่าตัวเองทีละ 1 (ใช้ IDENTITY)

1. ทำการเลือกฐานข้อมูลที่เราต้องการสร้างตารางจากนั้นคลิกที่ ICON เพิ่มตารางดังรูปที่ 4 จะปรากฏหน้าจอดังรูปที่ 5

2. จากนั้นใส่ชื่อตารางที่เราต้องการสร้างลงไปจากนั้นคลิกที่ปุ่ม Insert Column จะปรากฏหน้าจอดังรูปที่ 6สำหรับกำหนดรายละเอียดของ Column ที่เราต้องการจะสร้างให้กับตาราง จากนั้นทำการกำหนด column ที่เราต้องการสร้างให้หมดทั้ง 3 column จะได้ผลดังรูปที่ 7

3. จากนั้นคลิกที่ปุ่ท OK เราก็จะเห็นตารางที่เราสร้างขึ้นดังรูปที่ 8

clip_image013
clip_image014

รูปที่ 5 สร้างตารางใหม่ (5.bmp) รูปที่ 6 การสร้าง Column ใหม่ (6.bmp)

รูปที่ 7 column ทั้งหมดที่ต้องการ (7.bmp) รูปที่ 8 ตารางที่สร้างเสร็จแล้ว (8.bmp)

มาถึงตรงนี้ เราก็ได้ฐานข้อมูลตามที่เราต้องการแล้ว ต่อไปจะขอพูดถึงการเขียนโปรแกรมเพื่อติดต่อกับฐานข้อมูลครับ

การสร้างตารางด้วยการเขียนโปรแกรม

นอกจากการใช้ SQL Query Analyzer แล้วเรายังสามารถเขียนโปรแกรมเพื่อจัดการฐานข้อมูลเองได้โดย

clip_image016
ก่อนอื่นให้ทำการสร้าง Control ต่างๆ ดังรูปที่ 9 จากนั้นให้ทำการดับเบิ้ลคลิกที่ ปุ่ม Create Table เพื่อให้ VS.NET สร้าง method ที่จะทำงานเมื่อมีการคลิกปุ่มนี้มาให้จากนั้นพิพม์โค้ดดังรูปที่ 10 ลงไปใน method นั้น

clip_image018
รูปที่ 9 สร้าง Control ที่จำเป็น (9.bmp)

รูปที่ 10 code ที่ใช้ในการสร้างตาราง(10.bmp)

การทำงานของ Code

1. กำหนด DataSource หรือชื่อของฐานข้อมูลที่เราต้องการใช้จากนั้นทำการเชื่อมต่อกับ SQL Server โดยการใช้ instance ของ Class SqlCeConnection(บรรทัดที่ 90 -93)

2. สร้าง String ที่เราจะใช้เป็นคำสั่งในการสร้างฐานข้อมูล (คำสั่ง CREATE TABLE)(บรรทัดที่ 96-100)

3. สร้าง Instance ของ class SqlCeCommand เพื่อที่จะสั่งให้คำสั่ง SQL ทำงาน(บรรทัด ที่ 103-104)

4. กำหนดชนิดของคำสั่งในที่นี่เป็นแบบ Text (บรรทัดที่ 105)

5. สั่งให้ SqlCeCommand ทำงานด้วย method ExecuteNonQuery (บรรทัดที่ 106)

6. ปิดการเชื่อมต่อกับฐานข้อมูล (บรรทัดที่ 108 )

จัดการกับตาราง

เราสามารถทำงานกับฐานข้อมูล SQL Server CE ได้โดยใช้คำสั่ง SQL พื้นฐานมทั่วไปแต่ใน SQL Server CE นั้นสนับสนุนเพียงบางคำสั่งของ DML เท่านั้นเมื่อเทียบกับ SQL SERVER บนเครื่อง PC โดยคำสั่ง DML ที่ SQL SERVER CE สนับสนุนแสดงในตารางที่ 1

คำสั่ง

งานที่ทำได้

INSERT

เพิ่มแถวใหม่เข้าสู่ฐานข้อมูล

UPDATE

แก้ไขข้อมูลของแถวในตาราง

DELETE

ลบแถวออกจากตาราง

SELECT

ดึงข้อมูลออกมาจากตารางโดยที่คำสั่งนี้สนับสนุนการใช้งาน inner join , outer join , Order By , Group By และ Having

ตารางที่ 1 คำสั่ง DML ที่ SQL SERVER CE สนับสนุน

การ INSERT ข้อมูล

clip_image020
หลักการในการ insert ข้อมูลก็ไม่แตกต่างจากการใช้คำสั่ง Create Table เท่าใดนักแตกต่างกันเพียงแค่คำสั่ง SQL Statement ที่ใช้เท่านั้นดังรูปที่ 11 เป็นCode ที่ใช้แทรกแถวเข้าไปในตาราง BookTable ในแทรก Code นี้เอาไว้ใน Event Click ของ ปุ่ม Insert

รูปที่ 11 Code ที่ใช้ในการ แทรกแถวใหม่ในฐานข้อมูล (11.bmp)

ซึ่งจากใน Code จะเห็นได้ว่าเหมือนกับการใช้คำสั่ง Create TABLE ทุกประการ ต่างกันแค่การสร้างคำสั่ง SQL เท่านั้น ซึ่งการ Update และ delete ก็เช่นเดียวกัน เนื่องจากคำสั่งเหล่านี้เป็นคำสั่งที่ไม่มีการส่งค่ากลับมาจากฐานข้อมูลจึงใช้ method ExecuteNonQuery () ในการสั่งให้คำสั่งทำงาน

คราวนี้ให้เราลอง Start โปรแกรมของเราดูจากนั้นคลิกที่ปุ่ท Create Table และ Insert ตามลำดับ ดังรูปที่ 12 ต้องมั่นใจว่าได้ทำการปิด SQL CE Query Analyzer แล้วนะครับ

clip_image025
clip_image026

รูปที่ 12 โปรแกรมที่สร้างเสร็จแล้ว(12.bmp) รูปที่ 13 ตารางที่สร้างขึ้นใหม่(13.bmp)

รูปที่ 14 ทำการตรวจสอบข้อมูลที่อยู่ใน SQL SERVER(14.bmp) รูปที่ 15 ข้อมูลที่อยู่ในตาราง (15.bmp)

หลังจากนั้นให้ลองเปิด SQL CE Query Analyzer ออกมาอีกครั้งเพื่อตรวจสอบว่าตารางและแถวที่เราได้สั่งให้โปรแกรมเพิ่มเข้าไปนั่น ได้เข้าไปอยู่ในฐานข้อมูลจริงๆแล้วหรือยัง โดยวิธีการดังนี้

1. สั่งให้โปรแกรมทำการเชื่อมต่อกับฐานข้อมูล testDB.sdf ตามวิธี่ที่ได้กล่าวไปแล้วในตอนแรกทำการตรวจสอบดูว่าได้มีตาราง BookTable อยู่ซึ่งตารางนี้สร้างขึ้นด้วยโปรแกรมที่เราเขียนขึ้นเองดังรูปที่ 13

2. จากนั้นคลิกไปที่ tab SQL พิมพ์คำสั่ง SQL ลงไปดังนี้ “Select * from BookTable” จากนั้นคลิกที่ปุ่ม “Run ” บน Toolbar ดังรูปที่ 14

3. จากนั้นลองคลิกที่ tab Grid เราก็จะเห็นแถวข้อมูลที่เราได้เขียนโปรแกรมสั่งให้ insert เข้ามาดังรูปที่ 15

การดึงข้อมูลจาก SQL Server

ในการดึงข้อมูลออกมาจาก SQL Server CE นั้นเราจำเป็นต้องใช้ Class ที่ชื่อว่า SqlCeDataReader สำหรับขั้นตอนในการเขียนโปรแกรมจะเหมือนกับการ INSERT และ CREATE TABLE เกือบทุกอย่าง แต่สิ่งที่แตกต่างกันจะอยู่ที่ การใช้งาน method ExcuteReader() ใน ของ SqlCeCommand แทนที่จะใช้method ExcuteNonQuery() เนื่องจากเป็นการส่งคำสั่งที่มีการส่งค่ากลับมา โดย Code ใช้การใช้คำสั่ง Select จะเป็นดังรูปที่ 16 ครับ(แทรกไว้ใน Event ของ ปุ่ม Select)

clip_image028
รูปที่ 16 การเขียนโปรแกรมเพื่อ Select ข้อมูล (16.bmp)

บรรทัดที่ 150 เป็นการกำหนด รูปแบบที่จะให้โปรแกรมแสดงผล

บรรทัดที่ 161 เป็นการสร้าง Instance ของ class SqlCeDataReader เพื่อที่จะนำมารับค่าที่ SqlCeCommand ส่งกลับมา

บรรทัดที่ 166 สั่งให้ SqlCeCommand ทำงานพร้อมกับนำค่าที่ส่งกลับมาส่งให้กับ SqlCeDataReader

บรรทัดที่ 169 เป็นการเริ่มวนลูป While เพื่อให้โปรแกรมดึงค่าที่อยู่ใน SqlCeDataReader ออกมาจนหมด (ดึงออกมาแสดงทุกแถวที่มีนั่นเอง) โดยคำสั่ง drBookInfo.Read() จะมีค่าเป็นจริงหากยังมีแถวเหลืออยู่

บรรทัดที่ 172 สั่งให้แสดง MessageBox ตามรูปแบบที่กำหนดไว้ใน บรรทัดที่ 150

บรรทัดที่ 174 -175 เป็น method ที่ทำการ ดึงค่าออกมาจาก SqlCeDataReader โดยจะอยู่ในรูปแบบคือ Get{Datatype} ซึ่ง data type นี้ต้องตรงกับ data type ของ column ในฐานข้อมูลด้วยเช่นใน Column Book_Id มี data type เป็น int จึงต้องใช้คำสั่ง GetInt32 เป็นต้น ส่วนตัวเลข 0 , 1 , 2 นั่นหมายถึงลำดับของ column ที่ โปรแกรมดึงข้อมูลออกมานั่นเอง 0 หมายถึง column Book_ID , 1 คือ Book_Name และ 2 คือ Book_Details

หลังจากนั้น ลองสั่งรันโปรแกรมแล้วคลิกที่ปุ่ม Select โปรแกรมจะแสดงผลออกมาดังรูปที่ 17

clip_image030

รูปที่ 17 ผลจากคำสั่ง Select (17.bmp)

สรุป

SQL Server CE นับเป็นระบบฐานข้อมูลที่นับว่ามีประโยชน์กับเครื่อง Pocket PC พอสมควรเนื่องจากความง่ายในการใช้งาน สำหรับโปรแกรมเมอร์ที่เคยเขียนโปรแกรมกับ MS SQL SERVER บนเครื่อง PC มาแล้วก็ไม่เป็นการยากเลยที่จะเรียนรู้คำสั่งและการใช้งานต่างๆ

สำหรับบทความตอนนี้เป็นการแนะนำการเขียนโปรแกรมขั้นพื้นฐานในการเชื่อมต่อกับ SQL Server CE นะครับ code บางส่วนอาจจะยังเขียนได้ไม่ดี หรือมีการเขียนซ้ำๆเนื่องจากผู้เขียนต้องการให้เห็นการทำงานในแต่ละส่วนอย่างชัดเจนกันผู้เขียนต้องขออภัยมาที่นี่ด้วย

 

sukimplee said:

ผมทดสอบ บน Emulator Connect กับฐานข้อมูลได้ แต่เมื่อทดสอบกับ PDA ไม่สามารถใช้งาน ขึ้นข้อความว่า Notsupport

April 18, 2008 2:03 PM
(required)  
(optional)
(required)  
Add
Google
คอแหลม
โฆษณาออนไลน์,
				โฆษณา,ออนไลน์,ลงโฆษณา,ประกาศ,online advertising,online
				,advertising,โปรโมทสินค้า,โปรโมทเว็บไซต์,promote website,
				seo,pay per click,ad per click,media,ค้นหาเว็บ,media,
				สื่อ