การเข้าถึงฐานข้อมูล
การพัฒนาโปรแกรมประยุกต์ Visual Basic ส่วนใหญ่นำมาใช้กับฐานข้อมูล และการประยุกต์แบบ client / server ซึ่ง Visual Basic เป็นเครื่องมือที่อำนวยความสะดวกให้กับผู้พัฒนาโปรแกรมการเข้าถึงข้อมูล
ความสามารถใหม่ที่สัมพันธ์กับฐานข้อมูลของ Visual Basic มีพื้นฐานจาก ActiveX Data Object (ADO) ซึ่งเป็นเทคโนโลยีที่ให้ผู้ใช้เข้าถึงฐานข้อมูลหรือแหล่งข้อมูล เมื่อมีการใช้ OLE DB provider ติดต่อกับแหล่งข้อมูล
Visual Basic 6 มีวิธีการติดต่อกับฐานข้อมูลได้หลายวิธี
ODBC
ODBC ย่อมาจาก Open Data Connectivity และตั้งค่าการทำงานให้ผู้ใช้ติดต่อกับฐานข้อมูลทั้งภายในพื้นที่และระยะไกล Microsoft เสนอเทคโนโลยีที่เป็นวิธีการเข้าถึงฐานข้อมูลหลายประเภท เช่น dBase, Microsoft FoxPro, Microsoft Access, Microsoft SOL Server, Oracle รวมไฟล์ text แบบ comma-delimited ด้วยการใช้ API ร่วมกัน ส่วนที่โปรแกรมประยุกต์ทำงานกับ DLL เรียกว่า ODBC driver manager ซึ่งจะส่งคำสั่งไปที่ไดร์ฟเวอร์ ODBC ในการระบุฐานข้อมูลที่ผู้ใช้ต้องการ
สิ่งท้าทายของ ODBC เป็นการให้ติดต่อร่วมกับฐานข้อมูลประเภทต่างๆ ในทางทฤษฎี ผู้เขียนโปรแกรมประยุกต์สามารถเตรียมใช้ ODBC ติดต่อกับฐานข้อมูล Access และเปลี่ยนขนาดไปที่ฐานข้อมูล SOL Server โดยการเปลี่ยนไดร์ฟเวอร์ back-end ของ ODBC และมีคำสั่งไม่มาก การทำสิ่งเหล่านี้ได้เนื่องจากคำสั่งที่ส่งไปยังฐานข้อมูล คือ คำสั่งมาตรฐาน SQL ภาษา SOL (Structure Query Language) เป็นภาษาโปรแกรมที่ใช้กับฐานข้อมูล ในการปฏิบัติเลเยอร์ ODBC สามารถแปลงคำสั่ง SQL ให้เป็นภาษาเฉพาะของฐานข้อมูล ผู้เขียนโปรแกรม ODBC มักจะข้าม engine การแปลของ ODBC และส่งคำสั่งโดยตรงกับฐานข้อมูล
ODBC มีประสิทธิภาพเมื่อเปรียบเทียบกับเทคนิคการเข้าถึงข้อมูล ความได้เปรียบของ ODBC คือสนับสนุน API ทั้งประเภท 16 บิต และ 32 บิต ใน ODBC เวอร์ชัน 3 เพิ่มเทคนิคการบู๊ตให้ดีขึ้น เช่น การติดต่อแบบ pool ทำให้โปรแกรมประยุกต์ตอบสนองได้ดีขึ้น Microsoft Transaction Server ใช้การติดต่อแบบ pool เพื่อความเร็วในการเปิดการติดต่อโดย component ของ ActiveX ที่ทำงานอยู่ภายใต้ ODBC
การใช้ ODBC ไม่ใช่เรื่องง่ายโดยเฉพาะอย่างยิ่งสำหรับผู้พัฒนาโปรแกรมด้วย Visual Basic กลุ่มของฟังก์ชัน API มีความซับซ้อนและถ้ามีความผิดพลาดเกิดขึ้นอาจจะให้โปรแกรมประยุกต์เสียหาย ด้วยเหตุนี้ผู้พัฒนาโปรแกรม Visual Basic น้อยมากที่จะเขียนคำสั่งเรียกฟังก์ชัน ODBC โดยตรง เทคนิคการแก้ไขข้อมูลอื่น ๆ ส่วนใหญ่ให้ Visual Basic ใช้ไดร์ฟเวอร์ ODBC ในฐานะเลเยอร์กลาง ในบางครั้งอาจใช้เทคนิคอื่น ๆ กับการเรียก API โดยตรง แต่ไม่สามารถใช้วิธีการนี้กับ ADO ได้ถึงแม้ว่าภายใน ADO จะใช้ไดร์ฟเวอร์ ODBC
แนวคิดพื้นฐานของเทคโนโลยี เช่น เมื่อมีการทำงานกับ ADO มีความเกี่ยวข้องกับ Data Source Name (DSN) โดย DSN เป็นกลุ่มของค่าที่โปรแกรมประยุกต์ในการติดต่อกับฐานข้อมูล โดยทั่วไปจะรวมถึงชื่อไดร์ฟเวอร์ของ ODBC ที่ต้องการใช้ ชื่อของไดร์ฟเวอร์เป็น host ของแม่ข่ายฐานข้อมูล (การทำงาน กับ Client-Server engine เช่น SQL Server หรือ Oracle), ชื่อพาร์ทของฐานข้อมูลที่เจาะจง, เวลาสิ้นสุดของการติดต่อ, ชื่อของการเรียกเวิร์คสเตชัน หรือโปรแกรมประยุกต์ เป็นต้น
การสร้าง DSN ทำได้หลายวิธี ทั้งภายในและภายนอก Visual Basic ศูนย์กลางของคำสั่ง ODBC อยู่ใน control Panel ของระบบปฏิบัติการ Windows ที่ให้ผู้ใช้ติดต่อสร้าง DSN และคอนฟิก ODBC ซึ่งมี DSN หลายประเภท DSN ของผู้ใช้จะเก็บไว้ใน Registry ของระบบ และสามารถใช้ได้เฉพาะผู้ใช้ปัจจุบันโดยไม่สามารถแบ่งให้ผู้ใดได้ DSN ของระบบเก็บไว้ใน Registry เช่นกัน และสามารถเห็นได้โดยผู้ใช้อื่น ๆ รวมถึงแม่ข่าย Windows NT ไฟล์ DSN เก็บในไฟล์ .dsn และสามารถใช้ร่วมกันโดยผู้ใช้ทั้งหมดไฟล์ DSN สามารถคัดลอกได้ง่าย ทำให้การติดตั้งทำได้สะดวก อีกด้านหนึ่งโปรแกรมประยุกต์ต้องการที่เก็บ DSN ต้องใช้คำสั่งที่ระบุพาร์ทของไฟล์ DSN ที่สมบูรณ์
การทำงานกับ ODBC โดยไม่เกี่ยวข้องกับ DSN ทำได้โดยการให้สารสนเทศที่ต้องการสำหรับการติดต่อ เช่น ไดร์ฟเวอร์, ชื่อฐานข้อมูล และพาร์ทเป็นต้น ให้ถูกต้องในคำสั่ง วิธีนี้เรียกว่า DSN-Less Connections ซึ่งมีประสิทธิภาพเพราะประหยัดของไดร์ฟเวอร์ ODBC ในการเดินทางไปที่ Registry หรือไฟล์ DSN แต่วิธีการนี้ ผู้พัฒนาโปรแกรมต้องทำงานมากขึ้น
แท็บ 3 แท็บแรกของไดอะล๊อกบ๊อกซ์ ODBC ใน control Panel ให้ผู้ใช้สร้าง, ลบ และคอนฟิก DSN ทุกประเภท การสร้าง DSN ต้องเปิด ไดอะล๊อกบ๊อกซ์ ที่เกี่ยวข้องหลายชุด
แท็บ Driver แสดงไดร์ฟเวอร์ ODBC ที่มีการติดตั้งและเปรียบเทียบหมายเลขของเวอร์ชัน Visual Basic 6 มาพร้อมกับไดร์ฟเวอร์ ODBC หลายตัว แต่สามารถซื้อไดร์ฟเวอร์จากผู้ขายรายอื่น
แท็บ Tracing ของ ODBC Data Source Administrator กำหนดพาร์ทของไฟล์ล๊อกในการทำงานของ ODBC ซึ่งการป้องกันไดร์ฟเวอร์ เมื่อมีการหาข้อผิดพลาดโปรแกรมประยุกต์แบบ ODBC
แท็บ Connection Pool ให้ผู้ใช้สามารถใช้หรือยกเลิก Connection Pool สำหรับแต่ละไดร์ฟเวอร์ของ ODBC ตามปกติไม่ค่อยมีการเปลี่ยนแปลงการตั้งค่า และเก็บ About ให้ผู้ใช้ตรวจสอบตำแหน่งและเวอร์ชันของ DLL ของระบบย่อย ODBC
DAO
DAO หรือ Data Access Object เป็นหัวใจของโปรแกรมประยุกต์ Visual Basic 3 ในพัฒนาการประยุกต์กับฐานข้อมูล DAO เป็นการติดต่อแบบ Object-oriented ไปยัง Microsoft Jet ที่เป็น engine ที่มีความสามารถสูง ผู้พัฒนาโปรแกรมสามารถออกแบบฐานข้อมูล MDB ด้วย Access และใช้ DAO จากโปรแกรมประยุกต์ Visual Basic ในการเปิดฐานข้อมูล เพิ่มและลบเรคคอร์ด และจัดการทรานแซคชัน สิ่งที่ดีที่สุดของ DAO คือไม่จำกัดผู้ใช้กับ Jet database เพราะผู้ใช้สามารถเปิดฐานข้อมูลทุกชนิดที่มีไดร์ฟเวอร์ ODBC ได้โดยตรงหรือผู้ใช้สามารถใช้ Jet attached table ซึ่งเป็น table เสมือนที่ปรากฏตามฐานข้อมูล MDB แต่การดึงและเก็บข้อมูลจริงในแหล่งอื่นของ ODBC
ถ้าผู้ใช้สามารถใช้ DAO เข้าถึงแหล่ง non-jet ผู้ใช้สามารถเห็นกลไกของฐานข้อมูล Access เช่น โปรแกรมประยุกต์ไม่ใช่ฐานข้อมูล Access ผู้ใช้ยังคงโหลด DLL ของ Jet engine เข้าสู่หน่วยความจำ DAO ไม่สามารถให้ผู้ใช้ทำงานกับฟังก์ชัน API ของ ODBC โดยตรง เช่น การทำงานแบบผลลัพธ์หลายชุด, การคิวรี่แบบ asynchronous หรือการติดต่อด้วย DAO
Data control เป็นตัว control ที่ให้ผู้ใช้เชื่อมตัว control 1 ตัวหรือมากกว่าบนฟอร์มกับแหล่งข้อมูลและมีปุ่ม navigator สำหรับเลื่อนเรคคอร์ดของ table ที่มีการติดต่อ Data control ดูเหมือนเป็นเครื่องมือที่ดีมาก เพราะทำให้สามารถทำการอินเตอร์เฟซ กับผู้ใช้ได้รวดเร็วแต่พบว่า Data control มีข้อจำกัดอยู่หลายอย่าง เมื่อพิจารณาสมรรถนะ Data control มีข้อเสียเปรียบสำคัญประการหนึ่ง คือ ผูกติดการประยุกต์ด้าน Front-end กับข้อมูลในฐานข้อมูล ถ้ามีการเปลี่ยนไปใช้เข้าถึงฐานข้อมูลอื่น จะต้องมีทบทวนฟอร์ม ทั้งในโปรแกรมประยุกต์ ถ้าต้องการเพิ่ม Validation rule ที่ซับซ้อนไปยังฟิลด์ ในฐานข้อมูล ต้องมีการเพิ่มคำสั่งในโมดูลเดียวของโปรแกรม ทำให้มีผลกับสถาปัตยกรรม 2-tier และไม่สามารถใช้ได้กับสถาปัตยกรรม 3-tier ซึ่งมีเลเยอร์ชั้นกลางระหว่างโปรแกรมประยุกต์ กับฐานข้อมูล ที่ให้บริการ เช่น การตรวจสอบข้อมูล กฎทางธุรกิจ ความสมดุลของภาระงาน และความปลอดภัย
Visual Basic 4 ไปปรับปรุง DAO เวอร์ชัน 3 ซึ่งมีส่วน DLL พิเศษ ที่ให้ผู้พัฒนาโปรแกรมด้วยเทคโนโลยี 32 บิต สามารถเข้าถึงฐานข้อมูล 16 บิต Visual Basic 5 ได้ปรับปรุงเป็น DAO 3.54 และ Visual Basic ได้ปรับปรุงเป็น DAO 3.51 และ DAO เวอร์ชัน 4 ได้ปรับปรุงสำหรับ Microsoft Office 2000
RDO
RDO หรือ Remote Data Objects เป็นความพยายามครั้งแรกของ Microsoft ในการรวมความง่ายของ DAO กับความสามารถระดับสูงของ Direct ODBC API Programming โดย RDO เป็นแบบจำลองอ๊อบเจคที่ไม่ชัดเจน ภายหลัง DAO แต่ใช้การข้าม Jet engine และ DLL ของ DAO และทำงานโดยตรงกับไดร์ฟเวอร์ ODBC โปรแกรมประยุกต์ที่มาจาก RDO โหลดเฉพาะ DLL จำนวนหนึ่งแทนการใช้ทรัพยากรจำนวนมากของ Jet engine โดยสิ่งสำคัญอยู่ที่การออกแบบเฉพาะของ RDO ให้ทำงานกับทรัพยากรของ ODBC ทำให้สามรถทำงานที่ไม่สามารถเข้าถึงได้โดย DAO เทคโนโลยีของ RDO เป็นเทคโนโลยี 32 บิต จึงไม่สามารถใช้ได้จากโปรแกรมประยุกต์ 16 บิต
RDO1 ได้รับการแนะนำใน Visual Basic 4 และ engine มีการปรับปรุงใน Visual Basic เป็น RDO2 เวอร์ชันล่าสุดเป็นผลิตภัณฑ์ที่สมบูรณ์และสนับสนุนแบบจำลองการโปรแกรมใหม่ที่เป็นแบบ event ซึ่งมีประโยชน์กับการทำงานแบบ asynchronous การพัฒนา RDO ดูเหมือนได้หยุดลง เนื่องจาก Visual Basic 6 ยังคงใช้เวอร์ชัน 2 และไม่มีการปรับปรุงเพิ่มเติมจากเวอร์ชันที่มาพร้อมกับ Visual Basic 5
RDO1 และ RDO2 มาพร้อมกับ Remote Data control ซึ่งทำงานเหมือนกับ Data control และให้ผู้ใช้เชื่อมตัว control กับแหล่งข้อมูลระยะไกล จึงทำให้ Remote Data control มีข้อดีและข้อเสียเหมือนกับ Data control รวมถึงปัญหากับสถาปัตยกรรมแบบ n-tier
ODBC Direct
Visual Basic 5 ได้รวมเทคโนโลยีการเข้าถึงข้อมูลอีกแบบ ชื่อ ODBC Direct ซึ่งยินยอมให้ผู้พัฒนาโปรแกรมประยุกต์ RDO ด้วยไวยากรณ์ DAO โดย ODBC Direct ทำหน้าที่ในฐานะเทคนิคการส่งผ่านที่การเขียนโปรแกรม Visual Basic ย้ายการประยุกต์ DAO/Jet ไปยังสถาปัตยกรรม client/server ในทางทฤษฎีเป็นการเปลี่ยนคุณสมบัติเพียงเล็กน้อย ซึ่งโปรแกรม DAO ที่เก็บข้อมูลใน Jet database จะแปลงไปเป็นการประยุกต์แบบ client/server ในการติดต่อแหล่ง ODBC ในขณะที่ ODBC Direct ไม่ได้รับการพิจารณาในฐานะเทคโนโลยี แต่เหมือนเป็นวิธีการที่ทำให้ประหยัดเวลา การแปลงโปรแกรมประยุกต์ส่วนเพิ่มใหม่ของ RDO2 ส่วนใหญ่ เช่น แบบจำลองโปรแกรมแบบ event ไม่สามารถใช้ ODBC Direct เพราะคำสั่งเข้าได้กับ DAO แต่พื้นฐานคล้ายกับ RDO คือ ODBC Direct เป็นการประยุกต์ 32 บิต
OLE DB
OLE DB เป็นเทคโนโลยีการเข้าถึงข้อมูลระดับล่างที่ Microsoft ผู้พัฒนาให้เข้ามาแทนที่ ODBC ในฐานะวิธีการหลักในการติดต่อกับฐานข้อมูล ส่วนของ OLE DB ที่เทียบได้กับไดร์ฟเวอร์ของ ODBC คือ OLE DB provider ซึ่งทำงานเป็นสะพานระหว่างโปรแกรมประยุกต์กับฐานข้อมูล OLE DB เป็นเทคโนโลยีที่ใหม่ แต่ OLE DB provider พบได้ในฐานข้อมูลจำนวนมาก ถึงแม้ว่า ODBC และ OLE DB มีความคล้ายคลึงกัน แต่มีข้อแตกต่างกัน คือ OLE DB มีพื้นฐานจาก COM ซึ่งเป็นสถาปัตยกรรมที่ให้การย้ายปริมาณข้อมูลจำนวนมากผ่านเครือข่าย ประการต่อมา OLE DB ให้ตัวเองทำหน้าที่ในการติดต่อกับแหล่งข้อมูล ไม่เหมือนกับไดร์ฟเวอร์ ODBC ที่เป็นความสัมพันธ์กับฐานข้อมูล หรือ ISAM ( Indexed sequential access mode)
OLE DB เป็นยุทธศาสตร์ Microsoft's Universal Data Access ซึ่งเป็นการให้ผู้ใช้อ่านและประมวลข้อมูลโดยไม่ต้องแปลง และนำเข้ามายังฐานข้อมูลแบบแผน การใช้ OLE DB provider ทำให้ผู้ใช้สามารถประมวลข้อมูลใน e-mail, message, HTML, กระดาษทำการและเอกสารข้อความ และแหล่งข้อมูลภายนอก Visual Basic 6 มี provider ของ Microsoft Jet, SOL Server, FoxPro, ไฟล์ข้อความและฐานข้อมูล Oracle สำหรับ OLE DB provider อื่น ๆ สามารถดาวน์โหลดจากเว็บของ Microsoft
การส่งผ่านระหว่าง ODBC กับ OLE DB เป็นการใช้ OLE DB provider เฉพาะชื่อ MSDASQL ที่รู้จักในชื่อ Kagera ที่ทำหน้าที่เป็นสะพานเชื่อมกับแหล่งต่างๆ ของ ODBC แทนที่การติดต่อโดยตรงกับฐานข้อมูล ผู้ใช้สามารถใช้ provider พิเศษในการติดต่อกับไดร์ฟเวอร์ของ ODBC ซึ่งอ่านและเขียนข้อมูลในฐานข้อมูล การใช้เลเยอร์ส่วนเพิ่มนี้มีผลต่อสมรรถนะแต่น่าจะเป็นปัญหาในระยะสั้น
ADO
ADO หรือ ActiveX Data Object เป็นการติดต่อระดับสูงของ OLE DB มีบทบาทใกล้เคียง RDO ในทำงานกับ API ของ ODBC ในขณะที่ OLE DB คล้ายกับ API ของ ODBC ที่เป็นการติดต่อระดับล่างที่ไม่สามารถเข้าถึงได้ง่ายจากภาษาระดับสูง เช่น Visual Basic เป็นต้น ADO สร้างบน OLE DB เพื่อให้การทำงานที่ไม่ให้ติดต่อโดยตรง ODBC หรือทำให้ผู้ใช้เขียนคำสั่งที่มีความสามารถ ADO สามารถเปรียบเทียบความสามารถกับ ADO คือทั้งคู่สามารถสร้างคิวรี่แบบ asynchronous และการติดต่อ ADO เพิ่มส่วนใหญ่จำนวนมาก เช่น file-based และ stand-alone Recordset, hierarchical Recordset และอื่นๆ
ส่วนสำคัญของ ADO คือส่วนขยาย แทนที่จะซับซ้อนและลำดับชั้นของอ๊อบเจคที่แข็งตัว ซึ่ง DAO และ RDO เป็นอยู่ ADO ประกอบด้วยอ๊อบเจคจำนวนน้อยที่สามารถรวมได้ในหลายวิธีส่วนใหญ่สามารถเพิ่ม ADO ในรูปแบบพิเศษ ของ OLE DB provider เช่น Data Shape provider ซึ่งเสนออ๊อบเจค hierarchical Recordset ไปให้ provider อื่น ๆ Microsoft กำลังสร้างส่วนใหม่ให้ ADO ในรูปแบบพิเศษของไลบรารีแบบแยกที่เชื่อมแบบ dynamic ไปยังแกนไลบรารีรี่ของ ADO เช่น ไลบรารี ADO 2.1 ได้สนับสนุน Data Definition Language และความปลอดภัย (ในการสร้าง table ของฐานข้อมูล, ผู้ใช้ และกลุ่มของผู้ใช้), Jet replica และ Recordset แบบหลายมิติ เพราะตรงข้ามกับ DAO และ RDO ซึ่งจะฝัง DLL ขนาดใหญ่ในทุกส่วน
ส่วนพิเศษของ ADO ที่ผู้ใช้สามารถใช้ภายในเพ็จ HTML ใน browser เช่น Internet explorer หรือด้านแม่ข่ายด้วย Active Server Page บน Internet information Server ระบบย่อยของ ADO ระบบหนึ่งชื่อ Remote Data Service ให้ผู้ใช้ส่งกลุ่มของเรคคอร์ดไปยัง browser ของลูกข่าย หรือ component ของ active COM บนอินเตอร์เน็ต
|