วันพุธที่ 9 มีนาคม พ.ศ. 2554

บทที่ 6 การเชื่อมต่อฐานข้อมูลบน Visual Basic 6.0

ในการติดต่อกับฐานข้อมูล โดยปกติแล้ว VB จะเชื่อมโยงผ่านทาง Database Engine ที่เรียกว่า Jet Engine จึงอาจกล่าวได้ว่า Jet Engine คือ ไดเวอร์ชนิดหนึ่ง ซึ่งทําหน้าที่เป็นตัวเชื่อมโยงให้ VB สามารถติดต่อกับฐานข้อมูลได้
โดยฐานข้อมูลหลัก (Default) ที่ VB รู้จักเป็นอย่างดี ก็คือ Micosoft Access แต่ VB สามารถติดต่อกับฐานข้อมูลได้ทุกชนิดเช่นกัน โดยอาศัยเทคโนโลยีหลายๆ อย่าง การติดต่อกับฐานข้อมูลใน Visual Basic จะแยกออกเป็น 4 ประเภทใหญ่ๆ คือ


1. ติดต่อโดยอาศัยคอนโทรลด้านฐานข้อมูล มีศัพท์เรียกคอนโทรลกลุ่มนี้โดยเฉพาะว่า Bound
Controls ส่วนใหญ่แล้วก็คือ กลุ่มของคอนโทรลมาตรฐานที่ใช้กันโดยทั่วไปนั่นเอง เช่น คอนโทรล
TextBox , ListBox , ComboBox เป็นต้น โดยใช้ Data Control เป็นตัวเชื่อมระหว่างฐานข้อมูลกับกลุ่ม
Bound Control
2. ติดต่อโดยใช้ออบเจ็กต์ Data Access Object (DAO) ถือว่าเป็นวิธีที่ล้าสมัยแล้ว โดยมีแนวคิดใน
การติดต่อหรือเข้าถึงข้อมูลในฐานข้อมูลผ่านทางองค์ประกอบต่างๆในฐานข้อมูล เช่น ฟิลด์(Field), เร็ค
คอร์ด(Record), ความสัมพันธ์ระหว่างตาราง(Relation) เป็นต้น โดยจะแทนแต่ละองค์ประกอบเหล่านั้น
ด้วย Object และความคุม Object เหล่านั้นด้วยการเขียน Code
3. ติดต่อผ่าน ODBC โดยตรง (ODBC Direct) เป็นการติดต่อกับฐานข้อมูลแบบ 32 บิต ที่สนับสนุน
มาตรฐาน ODBC (Open DataBase Connectivity) ที่ Jet Engine ไม่สามารถจัดการได้ เช่นฐานข้อมูล
ของ Oracle , SQL Server เป็นต้น ซึ่งเป็นการติดต่อเฉพาะฐานข้อมูลที่มีการเก็บข้อมูลในรูปแบบ
ตารางเท่านั้น
4. เข้าถึงข้อมูลโดยอาศัยเทคโนโลยี OLEDB เป็นรูปแบบการติดต่อกับฐานข้อมูลผ่านทางกลุ่ม
ออบเจ็กต์ในโมเดล ADO (ActiveX Data Object) ซึ่งใช้ OLEDB Provider เป็นกลไกในการเข้าถึง
ข้อมูลในฐานข้อมูลแทน Jet Engine โดยเปลี่ยนจากมุมมองการติดต่อฐานข้อมูลแบบเดิมๆ ที่ต้อง
กําหนดชนิดของฐานข้อมูลมาเป็นมองที่รูปแบบการเชื่อมต่อ (Connection) เข้ากับฐานข้อมูล OLEDB
เป็นเทคโนโลยีล่าสุดที่ไมโครซอฟต์วางตําแหน่งให้เป็นยุคต่อไป

ในการเข้าถึงข้อมูลในฐานข้อมูลที่มีรูปแบบการเก็บข้อมูลสารพัดรูปแบบ ซึ่งไม่ได้จํากัดตัวเองเฉพาะตารางใน Visual Basic สามารถใช้ OLEDB ได้ 2 แบบคือ
- โดยการใช้ ADO Data Control ร่วมกับกลุ่มของ ActiveX Bound Controls ถ้าสังเกตจาก
ชื่อของ Control จะมีคําว่า OLEDB ต่อท้าย เช่น DataGrid, DataCombo
- ActiveX Data Object โดยการเขียนโปรแกรมควบคุม ในบทนี้จะกล่าวถึงเฉพาะ การเข้าถึงข้อมูลโดยอาศัยเทคโนโลยี OLEDB (ADO) และใช้ฐานข้อมูลของ Microsoft Access
โดยมีตารางดังนี้ (สร้างตารางใน Microsoft Access)


ในกรณีที่ต้องการพัฒนา Application ด้านฐานข้อมูลโดยอาศัยเทคโนโลยี OLEDB ควรจะเลือก VBIDE ชนิด Data Project

6.1 การใช้ ADO Data Control
ถ้าไม่ได้เลือกใช้ VBIDE ชนิด Data Project แต่เลือกเป็นชนิด StandardEXE จะต้องเพิ่ม Control
ขึ้นมาก่อนโดยผ่าน Components และใช้ Control ที่ชื่อว่า Microsoft ADO Data Control 6.0 (OLEDB) ดังรูปที่

6.1 ต่อไปนี้


เมื่อเพิ่ม Control แล้ว ให้ลาก ADO Data มาวาดลงบน Form จะมีลักษณะดังนี้


การกําหนดค่าที่ Property ต่างๆ จะเริ่มที่ Property ConnectionString เมื่อคลิกที่ Property นี้จะ
ปรากฏ ไดอะล็อกบล็อค ดังรูปที่ 6.3


การเชื่อมต่อด้วยวิธีของ ADO จะสามารถทําได้ 3 วิธี
1. Use Data Link File วิธีนี้เป็นการสร้างไฟล์เชื่อมโยงกับฐานข้อมูลขึ้นมาก่อน แยกออกมาเป็นไฟล์ต่างหาก มีนามสกุลเป็น .udl ถ้าเชื่อมโยงกับข้อมูลให้ใช้ไฟล์นามสกุล .udl นี้
2. รูปแบบ Use ODBC Data Source Name เป็นการกําหนดชื่อ DSN เพื่อเชื่อมโยงไปยังฐานข้อมูลที่ต้องการใช้งานผ่านทาง ODBC เมื่อต้องการใช้งานฐานข้อมูล ก็จะใช้ชื่อ DSN ที่ตั้งขึ้นมา เป็นชื่ออ้างอิงไปยังฐานข้อมูลที่กําหนดไว้
3. Use Connection String เป็นวิธีที่ง่ายที่สุด เหมาะกับผู้เริ่มต้นที่ไม่เคยสร้าง Lnk File หรือ ODBC มาก่อนซึ่งวิธีนี้มีขั้นตอนดังนี้ เริ่มต้นที่การคลิกที่ที่ Build.. เพื่อกําหนดการเชื่อมต่อ ซึ่งจะปรากฏไดอะล็อกบล็อก ให้เพื่อกําหนด Provider ที่ต้องการติดต่อดังรูปที่ 6.4


เลือกที่ Microsoft Jet 4 OLE DB Provider เนื่องจากต้องการเชื่อมโยงกับ Access จากนั้นคลิกที่
ปุม Next >> เพื่อกําหนดชื่อของฐานข้อมูลที่ต้องการติดต่อด้วย ดังรูปที่ 6.5


กําหนดฐานข้อมูลที่ต้องการติดต่อ เมื่อกําหนดฐานข้อมูลเสร็จแล้วให้ทดสอบการเชื่อมโยงกับ
ฐานข้อมูลโดยการคลิกที่ Test Connection หากเชื่อมโยงได้เรียบร้อยแล้ว ก็จะปรากฏไดอะล็อกบล็อก ดังรูปที่ 6.6


เมื่อ Test Connection เสร็จแล้วก็คลิกที่ OK ก็จะปรากฏข้อมูลในช่อง Use Connection String ดังรูปที่
6.7 ดังนี้


นอกจากการกําหนดค่าใน ConnectionString นี้แล้ว ยังมี Property ที่สําคัญอีกสิ่งหนึ่งคือ
“RecordSource” เมื่อคลิกที่ Property นี้ จะปรากฏไดอะล็อกบล็อกให้กําหนดรายละเอียดของ Table ที่ต้องการดังรูปที่ 6.8


6.2 การใช้ Data Grid ร่วมกับ ADO Data Control
จะใช้ Components ที่ชื่อ Microsoft Data Grid Control 6.0(OLEDB)
การใช้งาน Data Grid จะต้องกําหนด Properties ที่สําคัญดังต่อไปนี้

ชื่อ Propertyความหมาย
Nameชื่อของ Data Grid
Captionกําหนดข้อความเพื่อให้ปรากฏบน Grid
DataSourceเลือก ADO Data Control ที่อ้างถึงตารางที่ต้องการ
AllowUpdateเลือกเป็น T/F เพื่อกําหนดให้แสดงข้อมูลอย่างเดียวหรือให้แก้ไขได้ด้วย
Custom เพื่อกําหนดคุณสมบัติอื่นๆ เช่น Column กําหนดชื่อของหัวตารางแทนชื่อ Field

* คลิกขวาที่ Data Grid / Retrieve Fields เพื่อให้ Field ทั้งหมด แสดงขึ้นมา

6.3 การเขียนโปรแกรมกับ ADO Data Control
6.3.1 การใช้งาน Object RecordSet
เมื่อจะใช้คําสั่งต่างๆ เช่น คําสั่งที่ใช้ในการเลื่อนเคอร์เซอร์, AddNew, Update, Eof, Bof, EditMode เป็นต้น ก็จะต้องอ้างถึง RecordSet ก่อน



ตัวอย่างที่ 6.1 การติดต่อกับฐานข้อมูลและการใช้ datagrid เพื่อแสดงผล


6.3.2 การค้นหาข้อมูล
การค้นหาข้อมูลในฐานข้อมูล ถือได้ว่าเป็นคุณสมบัติที่ในทุกๆ ฐานข้อมูลควรจะมี เพราะถือว่าเป็นการ
อํานวยความสะดวกให้ผู้ใช้ โดยไม่ต้องหาข้อมูลที่ต้องการทีละ Record การค้นหาข้อมูลในฐานข้อมูลผ่านทางคอนโทรล ADO Data จะใช้ Method Find ของออบเจ็กต์ RecordSet ซึ่งมีรูปแบบดังนี้


6.3.3 การควบคุมการเลื่อน Record Pointer และคุณสมบัติของ BOF/EOF
ข้อมูลที่เก็บอยู่ในตารางจะเรียงซ้อนกันอยู่ ดังรูป


ตําแหน่งของ BOF (Begin Of File) คือตําแหน่งที่อยู่ก่อน Record แรกในตารางส่วน EOF(End Of File)
คือตําแหน่งที่อยู่ถัดไปจากเรคคอร์ดสุดท้ายในตาราง ตรงกลางเป็นหมายเลขประจํา Record การคลิกที่ Data Control จะควบคุมในการเลื่อน Record ไปยัง Record ที่ต้องการโดยใช้ Properties ย่อยของ RecordSet ดังนี้

ชื่อ Properties ย่อยลักษณะการทํางาน
MoveFirstเลื่อนเคอร์เซอร์ไป Record แรกสุด
MoveLastเลื่อนเคอร์เซอร์ไป Record สุดท้าย
MoveNextเลื่อนเคอร์เซอร์ไป Record ถัดไป
MovePreviousเลื่อนเคอร์เซอร์ไป Record ก่อนหน้า

ตัวอย่างที่ 6.2 การค้นหาข้อมูล



ตัวอย่างที่ 6.3 การเพิ่ม แก้ไข ลบ บันทึก ข้อมูล


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

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