ASP Lecture Series (16) การเข้าถึงฐานข้อมูล
ผู้เขียน:Eve Cole
เวลาอัปเดต:2009-05-30 19:58:46
ActiveX Data Objects (ADO) เป็นเทคโนโลยีที่ใช้งานง่ายและสามารถขยายได้สำหรับการเพิ่มการเข้าถึงฐานข้อมูลไปยังเว็บเพจ คุณสามารถใช้ ADO เพื่อเขียนสคริปต์ที่มีขนาดกะทัดรัดและกระชับเพื่อเชื่อมต่อกับฐานข้อมูลที่สอดคล้องกับ Open Database Connectivity (ODBC) และแหล่งข้อมูลที่สอดคล้องกับ OLE DB หากคุณเป็นผู้เขียนสคริปต์ที่มีความรู้เกี่ยวกับการเชื่อมต่อฐานข้อมูล คุณจะพบว่าคำสั่งคำสั่ง ADO นั้นไม่ซับซ้อนและง่ายต่อการเชี่ยวชาญ ในทำนองเดียวกัน หากคุณเป็นโปรแกรมเมอร์ฐานข้อมูลที่มีประสบการณ์ คุณจะประทับใจกับความสามารถด้านภาษาขั้นสูงและการประมวลผลแบบสอบถามของ ADO
การสร้างไฟล์ ODBC DSN ก่อนที่จะสร้างสคริปต์ฐานข้อมูล คุณต้องระบุวิธีสำหรับ ADO ในการค้นหา ระบุ และสื่อสารกับฐานข้อมูล โปรแกรมควบคุมฐานข้อมูลใช้ชื่อแหล่งข้อมูล (DSN) เพื่อค้นหาและระบุฐานข้อมูลที่สอดคล้องกับ ODBC เฉพาะเพื่อส่งผ่านข้อมูลจากแอปพลิเคชันเว็บไปยังฐานข้อมูล โดยทั่วไป DSN ประกอบด้วยการกำหนดค่าฐานข้อมูล ความปลอดภัยของผู้ใช้ และข้อมูลตำแหน่ง และสามารถรับเป็นตารางในคีย์รีจิสทรีของ Windows NT หรือเป็นไฟล์ข้อความ
ด้วย ODBC คุณสามารถเลือกประเภทของ DSN ที่คุณต้องการสร้าง: ผู้ใช้ ระบบ หรือไฟล์ DSN ของผู้ใช้และระบบจะถูกจัดเก็บไว้ในรีจิสทรีของ Windows NT DSN ของระบบอนุญาตให้ผู้ใช้ทั้งหมดที่ล็อกออนเข้าสู่เซิร์ฟเวอร์เฉพาะเพื่อเข้าถึงฐานข้อมูล ในขณะที่ DSN ของผู้ใช้จำกัดการเชื่อมต่อฐานข้อมูลไว้เฉพาะผู้ใช้ที่ระบุโดยใช้ข้อมูลประจำตัวด้านความปลอดภัยที่เหมาะสม ไฟล์ DSN ใช้เพื่อรับตารางจากไฟล์ข้อความ ให้การเข้าถึงผู้ใช้หลายราย และสามารถถ่ายโอนจากเซิร์ฟเวอร์หนึ่งไปยังอีกเซิร์ฟเวอร์หนึ่งได้อย่างง่ายดายโดยการคัดลอกไฟล์ DSN ด้วยเหตุผลเหล่านี้ ตัวอย่างในหัวข้อนี้จึงใช้ DSN ของไฟล์
คุณสามารถสร้างไฟล์ที่ใช้ DSN ได้โดยเปิดแผงควบคุมจากเมนูเริ่มของ Windows ดับเบิลคลิกที่ไอคอน ODBC เลือกเพจคุณสมบัติ File DSN คลิก Add เลือกไดรเวอร์ฐานข้อมูล และคลิก Next ทำตามคำแนะนำด้านล่างเพื่อกำหนดค่า DSN สำหรับซอฟต์แวร์ฐานข้อมูลของคุณ
การกำหนดค่าไฟล์ DSN สำหรับฐานข้อมูล Microsoft Access
ในกล่องโต้ตอบสร้างแหล่งข้อมูลใหม่ ให้เลือกโปรแกรมควบคุม Microsoft Access จากกล่องรายการ จากนั้นคลิกถัดไป
พิมพ์ชื่อไฟล์ DSN ของคุณแล้วคลิกถัดไป
คลิกเสร็จสิ้นเพื่อสร้างแหล่งข้อมูล
ในกล่องโต้ตอบการตั้งค่า ODBC Microsoft Access 97 คลิกเลือก เลือกไฟล์ฐานข้อมูล Microsoft Access (*.mdb) แล้วคลิกตกลง
หมายเหตุ เพื่อเหตุผลด้านประสิทธิภาพและความน่าเชื่อถือ เราขอแนะนำอย่างยิ่งให้คุณใช้ Client-Server Database Engine เพื่อกำหนดค่าข้อมูลที่ขับเคลื่อนโดยเว็บแอปพลิเคชันที่ต้องสามารถเข้าถึงได้โดยผู้ใช้มากกว่า 10 คนพร้อมกัน แม้ว่า ASP จะสามารถใช้ฐานข้อมูลที่สอดคล้องกับ ODBC ได้ แต่ได้รับการออกแบบและทดสอบอย่างเข้มงวดเพื่อใช้กับฐานข้อมูลไคลเอนต์-เซิร์ฟเวอร์ รวมถึง Microsoft ® SQL Server, Oracle และอื่นๆ
ASP รองรับฐานข้อมูลไฟล์ที่ใช้ร่วมกัน (เช่น Microsoft Access หรือ FoxPro) เป็นแหล่งข้อมูลที่ถูกต้อง แม้ว่าตัวอย่างบางส่วนในเอกสาร ASP จะใช้ฐานข้อมูลไฟล์ที่ใช้ร่วมกัน แต่เราขอแนะนำให้ใช้กลไกฐานข้อมูลดังกล่าวสำหรับการพัฒนาหรือการปรับใช้ที่จำกัดเท่านั้น ฐานข้อมูลไฟล์ที่แชร์อาจไม่เหมาะสำหรับฐานข้อมูลไคลเอนต์-เซิร์ฟเวอร์ที่ตอบสนองความต้องการสูงและแอปพลิเคชั่นเว็บคุณภาพสูง
กำหนดค่าไฟล์ฐานข้อมูล SQL Server DSN
หมายเหตุ หากฐานข้อมูลอยู่บนเซิร์ฟเวอร์ระยะไกล ให้ติดต่อผู้ดูแลระบบเซิร์ฟเวอร์เพื่อขอข้อมูลการกำหนดค่าเพิ่มเติม ขั้นตอนต่อไปนี้ใช้การตั้งค่าเริ่มต้น ODBC ของ SQL Server ซึ่งอาจใช้ไม่ได้กับการกำหนดค่าฮาร์ดแวร์ของคุณ
ในกล่องโต้ตอบสร้างแหล่งข้อมูลใหม่ เลือก SQL Server จากกล่องรายการ แล้วคลิกถัดไป
พิมพ์ชื่อสำหรับไฟล์ DSN แล้วคลิกถัดไป
คลิกเสร็จสิ้นเพื่อสร้างแหล่งข้อมูล
พิมพ์ชื่อ ID ล็อกอิน และรหัสผ่านของเซิร์ฟเวอร์ที่รันเซอร์วิสโปรแกรม SQL
ในกล่องโต้ตอบสร้างแหล่งข้อมูลใหม่สำหรับ SQL Serverพิมพ์ชื่อของเซิร์ฟเวอร์ที่ประกอบด้วยฐานข้อมูล SQL Server ในกล่องรายการเซิร์ฟเวอร์ แล้ว คลิ กถัดไป
เลือกวิธีการยืนยัน ID เข้าสู่ระบบของคุณ
หากคุณเลือกการรับรองความถูกต้องของเซิร์ฟเวอร์ SQL ให้ป้อน ID ล็อกอินและรหัสผ่าน แล้วคลิกถัดไป
ในกล่องโต้ตอบสร้างแหล่งข้อมูลใหม่สำหรับ SQL Server ให้ตั้งค่าฐานข้อมูลเริ่มต้น โปรแกรมควบคุมสำหรับการตั้งค่ากระบวนงานที่เก็บไว้ และการระบุ ANSI จากนั้นคลิกถัดไป (สำหรับข้อมูลเพิ่มเติม คลิกวิธีใช้)
ในกล่องโต้ตอบ (หรือชื่อสร้างแหล่งข้อมูลใหม่สำหรับ SQL Server) ให้เลือกวิธีการแปลงอักขระ จากนั้นคลิกถัดไป (สำหรับข้อมูลเพิ่มเติม คลิกวิธีใช้)
ในกล่องโต้ตอบถัดไป (หรือชื่อ "สร้างแหล่งข้อมูลใหม่สำหรับ SQL Server") ให้เลือกการตั้งค่าการเข้าสู่ระบบ
หมายเหตุ โดยทั่วไป คุณสามารถใช้บันทึกเพื่อแก้ไขปัญหาการเข้าถึงฐานข้อมูลเท่านั้น
ในกล่องโต้ตอบการตั้งค่า ODBC Microsoft SQL Server คลิกทดสอบแหล่งข้อมูล หากสร้าง DSN อย่างถูกต้อง กล่องโต้ตอบผลการทดสอบจะระบุว่าการทดสอบเสร็จสมบูรณ์แล้ว
การเชื่อมต่อเซิร์ฟเวอร์ SQL และข้อมูลความปลอดภัย หากคุณกำลังพัฒนาแอปพลิเคชันฐานข้อมูล ASP ที่เชื่อมต่อกับฐานข้อมูล SQL Server ระยะไกล คุณควรพิจารณาปัญหาต่อไปนี้:
ตัวเลือกการเชื่อมต่อ - คุณสามารถเลือกระหว่างซ็อกเก็ต TCP/IP และไปป์ที่มีชื่อเพื่อเข้าถึงฐานข้อมูล SQL Server ระยะไกล เมื่อใช้ไปป์ที่มีชื่อ เนื่องจากผู้ใช้ฐานข้อมูลต้องได้รับการรับรองความถูกต้องกับ Windows NT ก่อนที่จะสามารถสร้างการเชื่อมต่อได้ ผู้ใช้ที่มีข้อมูลประจำตัวการเข้าถึง SQL Server ที่เหมาะสม แต่ไม่มีบัญชีผู้ใช้ Windows NT บนคอมพิวเตอร์อาจถูกปฏิเสธการเข้าถึงไปยังไปป์ที่มีชื่อ อีกทางเลือกหนึ่ง การเชื่อมต่อโดยใช้ซ็อกเก็ต TCP/IP สามารถเชื่อมต่อโดยตรงกับเซิร์ฟเวอร์ฐานข้อมูลโดยไม่ต้องผ่านคอมพิวเตอร์ตัวกลางโดยใช้ไปป์ที่มีชื่อ เนื่องจากคุณสามารถเชื่อมต่อโดยตรงกับเซิร์ฟเวอร์ฐานข้อมูลโดยใช้การเชื่อมต่อซ็อกเก็ต TCP/IP ผู้ใช้จึงสามารถเข้าถึงผ่านการรับรองความถูกต้องของ SQL Server โดยไม่ต้องรับรองความถูกต้องผ่าน Windows NT
หมายเหตุ การใช้ซ็อกเก็ต TCP/IP สามารถปรับปรุงประสิทธิภาพเมื่อเชื่อมต่อกับฐานข้อมูลระยะไกล
ความปลอดภัย - หากคุณใช้คุณลักษณะด้านความปลอดภัยแบบรวมหรือแบบผสมของ SQL Server และฐานข้อมูล SQL Server อยู่บนเซิร์ฟเวอร์ระยะไกล คุณจะไม่สามารถใช้การตอบรับคำขอ/การตอบสนองของ Windows NT ได้ นั่นคือ ไม่สามารถส่งต่อ ID คำขอ/การตอบสนองของ Windows NT ไปยังคอมพิวเตอร์ระยะไกลได้ แต่สามารถใช้ได้เฉพาะการรับรองความถูกต้องขั้นพื้นฐานเท่านั้น ซึ่งขึ้นอยู่กับข้อมูลชื่อผู้ใช้และรหัสผ่านของผู้ใช้
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนี้ ดู http://www.microsoft.com/sqlsupport/
โฮมเพจการสนับสนุนด้านเทคนิคของ Microsoft SQL Server
กำหนดค่า DSN ของไฟล์ฐานข้อมูล Oracle
ขั้นแรก ตรวจสอบให้แน่ใจว่าซอฟต์แวร์ผู้ใช้ Oracle ได้รับการติดตั้งอย่างถูกต้องบนคอมพิวเตอร์ที่จะสร้าง DSN สำหรับข้อมูลเพิ่มเติม โปรดติดต่อผู้ดูแลระบบเซิร์ฟเวอร์ของคุณ หรือศึกษาเอกสารประกอบซอฟต์แวร์ฐานข้อมูลของคุณ
ในกล่องโต้ตอบสร้างแหล่งข้อมูลใหม่ เลือก Microsoft ODBC สำหรับ Oracle จากกล่องรายการ จากนั้นคลิก ถัดไป
พิมพ์ชื่อสำหรับไฟล์ DSN แล้วคลิกถัดไป
คลิกเสร็จสิ้นเพื่อสร้างแหล่งข้อมูล
ป้อนชื่อผู้ใช้ รหัสผ่าน และชื่อเซิร์ฟเวอร์ของคุณ แล้วคลิกตกลง
หมายเหตุ ไฟล์ DSN มีนามสกุล .dsn และอยู่ในไดเรกทอรี ProgramsCommon FilesODBCData Sources
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างไฟล์ DSN โปรดเยี่ยมชมเว็บไซต์ Microsoft ODBC: http://microsoft.com/odbc/
การเชื่อมต่อกับฐานข้อมูล ขั้นตอนแรกในการเข้าถึงข้อมูลฐานข้อมูลคือการสร้างการเชื่อมต่อกับแหล่งฐานข้อมูล ADO มีวัตถุการเชื่อมต่อที่สามารถใช้เพื่อสร้างและจัดการการเชื่อมต่อระหว่างแอปพลิเคชันและฐานข้อมูล ODBC วัตถุการเชื่อมต่อมีคุณสมบัติและวิธีการต่างๆ ที่คุณสามารถใช้เพื่อเปิดและปิดการเชื่อมต่อฐานข้อมูล และทำการร้องขอแบบสอบถามเพื่ออัปเดตข้อมูล
ในการสร้างการเชื่อมต่อฐานข้อมูล คุณต้องสร้างอินสแตนซ์ของออบเจ็กต์การเชื่อมต่อก่อน ตัวอย่างเช่น สคริปต์ต่อไปนี้สร้างวัตถุการเชื่อมต่อ จากนั้นเปิดการเชื่อมต่อฐานข้อมูล:
-
'สร้างวัตถุการเชื่อมต่อ
ตั้ง cn = Server.CreateObject("ADODB.Connection")
'เปิดการเชื่อมต่อ สตริงอ้างอิงถึง DSN
cn.เปิด "FILEDSN=MyDatabase.dsn"
-
หมายเหตุ สตริง DSN ไม่สามารถมีช่องว่าง ก่อนหรือหลังเครื่องหมายเท่ากับ (=)
ในกรณีนี้ วิธีการเปิดของวัตถุการเชื่อมต่ออ้างอิงถึงไฟล์ที่ใช้ DSN ซึ่งมีข้อมูลตำแหน่งและการกำหนดค่าเกี่ยวกับฐานข้อมูล คุณยังสามารถอ้างอิงผู้ให้บริการ แหล่งข้อมูล ID ผู้ใช้ และรหัสผ่านได้อย่างชัดเจนโดยไม่ต้องอ้างอิง DSN
การดำเนินการสืบค้นด้วยอ็อบเจ็กต์การเชื่อมต่อ โดยใช้วิธีการดำเนินการของอ็อบเจ็กต์การเชื่อมต่อ คุณสามารถออกการสืบค้น Structured Query Language (SQL) ไปยังแหล่งฐานข้อมูลและเรียกค้นผลลัพธ์ได้ SQL เป็นภาษามาตรฐานอุตสาหกรรมสำหรับการสื่อสารกับฐานข้อมูลและมีคำสั่งมากมายสำหรับการดึงและอัปเดตข้อมูล
สคริปต์ต่อไปนี้ใช้วิธี Execute ของอ็อบเจ็กต์การเชื่อมต่อเพื่อออกแบบสอบถามในตารางโดยใช้คำสั่ง SQL INSERT ซึ่งจะแทรกข้อมูลลงในตารางฐานข้อมูลเฉพาะ ในตัวอย่างต่อไปนี้ สคริปต์จะแทรกชื่อ Jose Lugo ลงในตารางฐานข้อมูลชื่อลูกค้า
-
'กำหนด DSN ที่ใช้ไฟล์
strDSN = "FILEDSN=MyDatabase.dsn"
'สร้างอินสแตนซ์ของวัตถุการเชื่อมต่อและเปิดการเชื่อมต่อฐานข้อมูล
ตั้ง cn = Server.CreateObject("ADODB.Connection")
cn.เปิด strDSN
'กำหนดคำสั่ง SQL SELECT'
strSQL = "ใส่ค่าลูกค้า (ชื่อ นามสกุล) ('Jose','Lugo')"
'ใช้วิธีการดำเนินการเพื่อออกแบบสอบถาม SQL ไปยังฐานข้อมูล
cn.Execute(strSQL)
-
โปรดทราบว่าไฟล์ที่ใช้สตริงเส้นทาง DSN ไม่ควรมีช่องว่างก่อนและหลังเครื่องหมายเท่ากับ (=)
นอกจากคำสั่ง SQL INSERT แล้ว คุณยังสามารถใช้คำสั่ง SQL UPDATE และ DELETE เพื่อเปลี่ยนแปลงและลบข้อมูลฐานข้อมูลได้
การใช้คำสั่ง SQL UPDATE คุณสามารถเปลี่ยนค่าของแต่ละรายการในตารางฐานข้อมูลได้ สคริปต์ต่อไปนี้ใช้คำสั่ง UPDATE เพื่อเปลี่ยนเขตข้อมูล FirstName ของแต่ละเรกคอร์ดในตารางลูกค้าซึ่งเขตข้อมูล LastName มีนามสกุล Smith เป็น Jeff
-
ตั้ง cn = Server.CreateObject("ADODB.Connection")
cn.เปิด "FILEDSN=MyDatabase.dsn"
cn.Execute "อัปเดตลูกค้า SET FirstName = 'Jeff' WHERE LastName = 'Smith' "
-
หากต้องการลบระเบียนเฉพาะออกจากตารางฐานข้อมูล ให้ใช้คำสั่ง SQL DELETE สคริปต์ต่อไปนี้จะลบแถวทั้งหมดที่มีนามสกุล Smith ออกจากตารางลูกค้า:
-
ตั้ง cn = Server.CreateObject("ADODB.Connection")
cn.เปิด "FILEDSN=MyDatabase.dsn"
cn.Execute "ลบจากลูกค้าโดยที่ LastName = 'Smith'"
-
หมายเหตุ คุณต้องใช้ความระมัดระวังเมื่อใช้คำสั่ง SQL DELETE เมื่อคุณใช้คำสั่ง DELETE โดยไม่มีส่วนคำสั่ง WHERE คำสั่งนั้นจะลบแถวทั้งหมดในตาราง อย่าลืมรวมคำสั่งย่อย SQL WHERE เพื่อระบุแถวที่ต้องการลบ
การใช้วัตถุชุดระเบียนเพื่อประมวลผลผลลัพธ์ แม้ว่าวัตถุการเชื่อมต่อจะทำให้งานการเชื่อมต่อกับฐานข้อมูลและการสอบถามง่ายขึ้น วัตถุการเชื่อมต่อยังคงมีข้อบกพร่องมากมาย โดยเฉพาะอย่างยิ่ง วัตถุการเชื่อมต่อที่ดึงข้อมูลและแสดงข้อมูลฐานข้อมูลไม่สามารถใช้เพื่อสร้างสคริปต์ได้ คุณต้องทราบอย่างชัดเจนว่าคุณต้องการทำการเปลี่ยนแปลงใดกับฐานข้อมูลก่อนจึงจะสามารถใช้แบบสอบถามเพื่อดำเนินการเปลี่ยนแปลงได้
สำหรับการเรียกข้อมูล การตรวจสอบผลลัพธ์ และการเปลี่ยนแปลงฐานข้อมูล ADO มีวัตถุชุดระเบียน ตามชื่อที่สื่อถึง วัตถุ Recordset มีคุณลักษณะหลายอย่างที่คุณสามารถใช้เพื่อดึงข้อมูลและแสดงชุดของแถวฐานข้อมูลหรือ "บันทึก" โดยขึ้นอยู่กับข้อจำกัดของแบบสอบถามของคุณ ออบเจ็กต์ Recordset จะเก็บตำแหน่งของเรกคอร์ดที่ส่งคืนโดยการสืบค้น ซึ่งช่วยให้คุณสามารถดูผลลัพธ์ทีละรายการได้
ขึ้นอยู่กับการตั้งค่าคุณสมบัติ PointerType ของวัตถุ Recordset คุณสามารถเลื่อนและอัปเดตระเบียนได้ ตัวชี้ฐานข้อมูลช่วยให้คุณค้นหารายการเฉพาะภายในชุดบันทึกได้ ตัวชี้ยังใช้ในการดึงและตรวจสอบบันทึก จากนั้นดำเนินการตามบันทึกเหล่านั้น ออบเจ็กต์ชุดระเบียนมีคุณสมบัติที่ช่วยให้คุณควบคุมพฤติกรรมของพอยน์เตอร์ได้อย่างแม่นยำ ช่วยเพิ่มความสามารถในการตรวจสอบและอัปเดตผลลัพธ์ ตัวอย่างเช่น คุณสามารถใช้คุณสมบัติ CursorType และ CursorLocation เพื่อตั้งค่าประเภทของตัวชี้ ส่งคืนผลลัพธ์ไปยังแอปพลิเคชันไคลเอนต์ (โดยทั่วไปผลลัพธ์จะคงอยู่บนเซิร์ฟเวอร์ฐานข้อมูล) และแสดงการเปลี่ยนแปลงล่าสุดที่ทำกับฐานข้อมูลโดยผู้ใช้รายอื่น .
การเรียกบันทึก แอปพลิเคชันฐานข้อมูลที่ประสบความสำเร็จจะใช้อ็อบเจ็กต์การเชื่อมต่อเพื่อสร้างลิงก์ และอ็อบเจ็กต์ Recordset เพื่อประมวลผลข้อมูลที่ส่งคืน ด้วยการ "ประสานงาน" ฟังก์ชันเฉพาะของสองออบเจ็กต์ คุณสามารถพัฒนาแอปพลิเคชันฐานข้อมูลที่สามารถทำงานประมวลผลข้อมูลได้เกือบทุกประเภท ตัวอย่างเช่น สคริปต์ฝั่งเซิร์ฟเวอร์ต่อไปนี้ใช้วัตถุ Recordset เพื่อดำเนินการคำสั่ง SQL SELECT คำสั่ง SELECT ดึงชุดข้อมูลตามข้อจำกัดในการสืบค้น แบบสอบถามยังประกอบด้วยส่วนคำสั่ง SQL WHERE ซึ่งใช้เพื่อจำกัดขอบเขตของแบบสอบถามให้แคบลง ในตัวอย่างนี้ ส่วนคำสั่ง WHERE จะจำกัดการสืบค้นเฉพาะระเบียนทั้งหมดที่มีนามสกุล Smith ในตารางฐานข้อมูลลูกค้า
-
'สร้างการเชื่อมต่อกับแหล่งข้อมูล
strDSN = "FILEDSN=MyDatabase.dsn"
ตั้ง cn = Server.CreateObject("ADODB.Connection")
cn.เปิด strDSN
'สร้างอินสแตนซ์ของวัตถุ Recordset
ตั้งค่า rsCustomers = Server.CreateObject("ADODB.Recordset")
'เปิดชุดระเบียนโดยใช้วิธีการเปิด
' และใช้การเชื่อมต่อที่สร้างโดยออบเจ็กต์การเชื่อมต่อ
strSQL = "เลือกชื่อ นามสกุลจากลูกค้า โดยที่ นามสกุล = 'Smith' "
rsCustomers.Open strSQL, cn
'วนรอบชุดบันทึกและแสดงผลลัพธ์
' และเพิ่มตำแหน่งบันทึกด้วยวิธี MoveNext
ตั้ง objFirstName = rsCustomers("FirstName")
ตั้ง objLastName = rsCustomers("นามสกุล")
ทำจนกว่า rsCustomers.EOF
การตอบกลับเขียน objFirstName & " " & objLastName & "<BR>"
rsCustomers.MoveNext
วนซ้ำ
-
โปรดทราบว่าในตัวอย่างก่อนหน้านี้ วัตถุการเชื่อมต่อถูกใช้เพื่อสร้างการเชื่อมต่อฐานข้อมูล และวัตถุชุดระเบียนใช้การเชื่อมต่อเพื่อดึงผลลัพธ์จากฐานข้อมูล วิธีการนี้มีประโยชน์เมื่อคุณต้องการตั้งค่าวิธีสร้างลิงก์ไปยังฐานข้อมูลอย่างชัดเจน ตัวอย่างเช่น หากคุณต้องการระบุระยะเวลาที่ต้องรอก่อนที่ความพยายามในการเชื่อมต่อจะล้มเหลว คุณต้องใช้ออบเจ็กต์การเชื่อมต่อเพื่อตั้งค่าคุณสมบัติ อย่างไรก็ตาม หากคุณต้องการสร้างการเชื่อมต่อโดยใช้คุณสมบัติการเชื่อมต่อเริ่มต้นของ ADO เท่านั้น คุณควรใช้เมธอด Open ของวัตถุ Recordset เพื่อสร้างลิงก์:
-
strDSN = "FILEDSN=MyDatabase.dsn"
strSQL = "เลือกชื่อ นามสกุลจากลูกค้า โดยที่ นามสกุล = 'Smith' "
ตั้งค่า rsCustomers = Server.CreateObject("ADODB.Recordset")
'เปิดการเชื่อมต่อโดยใช้วิธีการเปิด
'และใช้การเชื่อมต่อที่สร้างโดยวัตถุการเชื่อมต่อ
rsCustomers.Open strSQL, strDSN
'วนรอบชุดบันทึก แสดงผลลัพธ์
' และเพิ่มตำแหน่งบันทึกด้วยวิธี MoveNext
ตั้ง objFirstName = rsCustomers("FirstName")
ตั้ง objLastName = rsCustomers("นามสกุล")
ทำจนกว่า rsCustomers.EOF
การตอบกลับเขียน objFirstName & " " & objLastName & "<BR>"
rsCustomers.MoveNext
วนซ้ำ
-
เมื่อใช้วิธีการเปิดของวัตถุชุดระเบียนเพื่อสร้างการเชื่อมต่อ ต้องใช้วัตถุการเชื่อมต่อเพื่อความปลอดภัยของการเชื่อมต่อ
การใช้วัตถุคำสั่งเพื่อปรับปรุงแบบสอบถาม ด้วยวัตถุคำสั่ง ADO คุณสามารถดำเนินการแบบสอบถามได้เหมือนกับที่คุณทำกับวัตถุการเชื่อมต่อและชุดระเบียน ข้อแตกต่างเพียงอย่างเดียวคือด้วยวัตถุ Command คุณสามารถจัดเตรียม คอมไพล์ และวนซ้ำแบบสอบถามของคุณบนฐานข้อมูลได้ แหล่งที่มาโดยใช้ชุดค่าอื่นสอบถาม ข้อดีของการคอมไพล์เคียวรีด้วยวิธีนี้คือ คุณสามารถลดเวลาที่ต้องใช้ในการออกคำขอที่แก้ไขไปยังเคียวรีที่มีอยู่ซ้ำๆ ได้ หรือคุณสามารถปล่อยให้แบบสอบถาม SQL ไม่ได้กำหนดไว้บางส่วนก่อนดำเนินการผ่านตัวเลือกในส่วนตัวแปรของการสืบค้นของคุณ
คอลเลกชันพารามิเตอร์ของอ็อบเจ็กต์ Command ช่วยให้คุณประหยัดปัญหาในการสร้างคิวรีใหม่ทุกครั้งที่ออกใหม่ ตัวอย่างเช่น หากคุณต้องการอัปเดตข้อมูลอุปทานและราคาเป็นประจำในระบบเว็บตามสินค้าคงคลัง คุณสามารถกำหนดการสืบค้นล่วงหน้าได้ดังต่อไปนี้:
-
'เปิดการเชื่อมต่อโดยใช้อ็อบเจ็กต์การเชื่อมต่อ อ็อบเจ็กต์คำสั่ง
'ไม่มีวิธีการเปิดสำหรับสร้างการเชื่อมต่อ
strDSN = "FILEDSN=MyDatabase.dsn"
ตั้ง cn = Server.CreateObject("ADODB.Connection")
cn.เปิด strDSN
'วัตถุคำสั่งอินสแตนซ์ ใช้คุณสมบัติ ActiveConnection เพื่อแนบ
'การเชื่อมต่อกับวัตถุคำสั่ง
ตั้งค่า cm= Server.CreateObject("ADODB.Command")
ตั้งค่า cm.ActiveConnection = cn
'กำหนดแบบสอบถาม SQL
cm.CommandText = "ใส่ค่าสินค้าคงคลัง (วัสดุ, ปริมาณ) (?, ?)"
'บันทึกแบบสอบถามที่ระบุใน CommandText เวอร์ชันที่เตรียมไว้ (หรือคอมไพล์ล่วงหน้า)
'คุณสมบัติก่อนการดำเนินการครั้งแรกของวัตถุ Command
ซม.เตรียมพร้อม = จริง
'กำหนดข้อมูลการกำหนดค่าพารามิเตอร์แบบสอบถาม
cm.Parameters.ผนวก cm.CreateParameter("material_type",200, ,255 )
cm.Parameters.Append cm.CreateParameter("ปริมาณ",200, ,255 )
'กำหนดและดำเนินการแทรกครั้งแรก
cm("material_type") = "หลอดไฟ"
ซม.("ปริมาณ") = "40"
ซม.ดำเนินการ
'กำหนดและดำเนินการแทรกที่สอง
cm("material_type") = "ฟิวส์"
ซม.("ปริมาณ") = "600"
ซม.ดำเนินการ
-
ตรวจสอบตัวอย่างด้านบนแล้วคุณจะสังเกตเห็นว่าสคริปต์สร้างและออกแบบสอบถาม SQL ซ้ำ ๆ ด้วยค่าที่แตกต่างกันโดยไม่ต้องกำหนดและส่งแบบสอบถามใหม่ไปยังแหล่งฐานข้อมูล การคอมไพล์คิวรีด้วยอ็อบเจ็กต์ Command ยังช่วยหลีกเลี่ยงปัญหาการรวมสตริงและตัวแปรตารางที่เกิดจากคิวรี SQL อีกด้วย โดยเฉพาะอย่างยิ่ง ปัญหาที่เกี่ยวข้องกับการกำหนดประเภทของตัวแปรสตริง วันที่ และเวลาสามารถหลีกเลี่ยงได้โดยใช้การรวบรวมพารามิเตอร์ของอ็อบเจ็กต์ Command ตัวอย่างเช่น ค่าการสืบค้น SQL ที่มี "'" อาจทำให้การสืบค้นล้มเหลว:
strSQL = "ใส่ค่าลูกค้า (ชื่อ นามสกุล) ('Robert', 'O'Hara')"
โปรดทราบว่านามสกุล O'Hara มี "'" ซึ่งขัดแย้งกับ "'" ที่ใช้เพื่อแสดงข้อมูลในคีย์เวิร์ด SQL VALUES ปัญหาประเภทนี้สามารถหลีกเลี่ยงได้โดยการผูกค่าคิวรีเป็นพารามิเตอร์อ็อบเจ็กต์ Command
การรวมตาราง HTML และฐานข้อมูล การเข้าถึงเว็บเพจที่มีตาราง HTML ช่วยให้ผู้ใช้สามารถสืบค้นฐานข้อมูลจากระยะไกลและเรียกข้อมูลเฉพาะได้ การใช้ ADO คุณสามารถสร้างสคริปต์ง่ายๆ เพื่อรวบรวมข้อมูลตารางผู้ใช้ สร้างแบบสอบถามฐานข้อมูลแบบกำหนดเอง และส่งคืนข้อมูลให้กับผู้ใช้ เมื่อใช้ออบเจ็กต์ ASP Request คุณสามารถดึงข้อมูลที่ป้อนลงในตาราง HTML และรวมข้อมูลนี้ไว้ในคำสั่ง SQL ตัวอย่างเช่น โมดูลสคริปต์ต่อไปนี้จะแทรกข้อมูลที่จัดทำโดยตาราง HTML ลงในตาราง สคริปต์นี้ใช้การรวบรวมแบบฟอร์มของออบเจ็กต์คำขอเพื่อรวบรวมข้อมูลผู้ใช้
-
'เปิดการเชื่อมต่อโดยใช้วัตถุการเชื่อมต่อ'
'ไม่มีวิธีการเปิดสำหรับสร้างการเชื่อมต่อ
strDSN = "FILEDSN=MyDatabase.dsn"
ตั้งค่า cn = Server.CreateObject("ADODB.Connection")
cn.เปิด strDSN
'วัตถุคำสั่งอินสแตนซ์
'และใช้คุณสมบัติ ActiveConnection เพื่อแนบ
'การเชื่อมต่อกับวัตถุคำสั่ง
ตั้งค่า cm= Server.CreateObject("ADODB.Command")
ตั้งค่า cm.ActiveConnection = cn
'กำหนดแบบสอบถาม SQL
cm.CommandText = "ใส่ลงใน MySeedsTable (ประเภท) ค่า (?)"
'กำหนดข้อมูลการกำหนดค่าพารามิเตอร์แบบสอบถาม
cm.Parameters.Append cm.CreateParameter("type",200, ,255 )
'กำหนดและดำเนินการแทรก
cm("type") = คำขอ("SeedType")
ซม.ดำเนินการ
-
การจัดการการเชื่อมต่อฐานข้อมูล ความท้าทายที่ใหญ่ที่สุดในการออกแบบแอปพลิเคชันฐานข้อมูลบนเว็บที่มีประสิทธิภาพ เช่น แอปพลิเคชันซื้อของออนไลน์ที่ให้บริการลูกค้าหลายพันราย คือการจัดการการเชื่อมต่อฐานข้อมูลอย่างเหมาะสม การเปิดและรักษาการเชื่อมต่อฐานข้อมูลแม้ว่าจะไม่มีการถ่ายโอนข้อมูล แต่ก็อาจใช้ทรัพยากรเซิร์ฟเวอร์ฐานข้อมูลอย่างรุนแรงและอาจทำให้เกิดปัญหาการเชื่อมต่อ แอปพลิเคชันฐานข้อมูลบนเว็บที่ได้รับการออกแบบอย่างดีจะรีไซเคิลการเชื่อมต่อฐานข้อมูลและสามารถชดเชยความล่าช้าที่เกิดจากความแออัดของเครือข่ายได้
ทำให้เกิดการหมดเวลาการเชื่อมต่อ กิจกรรมที่เพิ่มขึ้นอย่างกะทันหันอาจทำให้เซิร์ฟเวอร์ฐานข้อมูลเทอะทะมาก ซึ่งเพิ่มเวลาที่ใช้ในการสร้างการเชื่อมต่อฐานข้อมูลอย่างมาก เป็นผลให้เวลาแฝงในการเชื่อมต่อที่มากเกินไปจะทำให้ประสิทธิภาพของฐานข้อมูลลดลง
การใช้ ConnectionTimeout ของออบเจ็กต์การเชื่อมต่อ คุณสามารถจำกัดเวลาที่แอปพลิเคชันรอก่อนที่จะละทิ้งความพยายามในการเชื่อมต่อและแสดงข้อความแสดงข้อผิดพลาด ตัวอย่างเช่น สคริปต์ต่อไปนี้ตั้งค่าคุณสมบัติ ConnectionTimeout ให้รอ 20 วินาทีก่อนที่จะยกเลิกความพยายามในการเชื่อมต่อ:
ตั้ง cn = Server.CreateObject("ADODB.Connection")
cn.การเชื่อมต่อหมดเวลา = 20
cn.เปิด "FILEDSN=MyDatabase.dsn"
คุณสมบัติ ConnectionTimeout เริ่มต้นคือ 30 วินาที
หมายเหตุ ก่อนที่จะรวมคุณสมบัติ ConnectionTimeout ลงในแอปพลิเคชันฐานข้อมูล ตรวจสอบให้แน่ใจว่าผู้ให้บริการการเชื่อมต่อและแหล่งข้อมูลสนับสนุนคุณสมบัตินั้น
แอปพลิเคชันฐานข้อมูลเว็บการเชื่อมต่อที่ใช้ร่วมกันที่สร้างและทำลายการเชื่อมต่อฐานข้อมูลบ่อยครั้งอาจทำให้ประสิทธิภาพของเซิร์ฟเวอร์ฐานข้อมูลลดลง ASP รองรับการจัดการการเชื่อมต่ออย่างมีประสิทธิภาพโดยใช้คุณสมบัติการแชร์ของ ODBC 3.5 การแชร์การเชื่อมต่อจะรักษาการเชื่อมต่อฐานข้อมูลแบบเปิดและจัดการการแชร์การเชื่อมต่อนั้นระหว่างผู้ใช้ที่แตกต่างกัน เพื่อรักษาประสิทธิภาพและลดจำนวนการเชื่อมต่อที่ไม่ได้ใช้งาน สำหรับการร้องขอการเชื่อมต่อแต่ละครั้ง พูลการเชื่อมต่อจะกำหนดก่อนว่ามีการเชื่อมต่อที่ไม่ได้ใช้งานในพูลหรือไม่ หากมีอยู่ พูลการเชื่อมต่อจะส่งกลับการเชื่อมต่อแทนที่จะสร้างการเชื่อมต่อใหม่ไปยังฐานข้อมูล
ถ้าคุณต้องการให้โปรแกรมควบคุม ODBC ของคุณมีส่วนร่วมในการใช้การเชื่อมต่อร่วมกัน คุณต้องกำหนดค่าโปรแกรมควบคุมฐานข้อมูล และตั้งค่าคุณสมบัติ CPTimeout ของโปรแกรมควบคุมในรีจิสทรี Windows NT เมื่อ ODBC ยกเลิกการเชื่อมต่อ การเชื่อมต่อจะถูกรวมเข้าด้วยกันแทนที่จะตัดการเชื่อมต่อ คุณสมบัติ CPTimeout กำหนดระยะเวลาการเชื่อมต่อที่จะคงอยู่ในพูลการเชื่อมต่อ หากการเชื่อมต่อยังคงอยู่ในพูลนานกว่าการตั้งค่า CPTimeout การเชื่อมต่อจะถูกปิดและลบออกจากพูล ค่าเริ่มต้นสำหรับ CPTimeout คือ 60 วินาที
คุณสามารถเปิดใช้งานการรวมการเชื่อมต่อสำหรับโปรแกรมควบคุมฐานข้อมูล ODBC เฉพาะโดยเลือกการตั้งค่าคุณสมบัติ CPTimeout โดยการสร้างชุดคีย์รีจิสทรีดังต่อไปนี้:
HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INIชื่อไดรเวอร์CPTimeout = หมดเวลา
(REG_SZ หน่วยเป็นวินาที)
ตัวอย่างเช่น คีย์ต่อไปนี้จะตั้งค่าการหมดเวลาของพูลการเชื่อมต่อของโปรแกรมควบคุม SQL Server เป็น 180 วินาที (3 นาที)
HKEY_LOCAL_MACHINESOFTWAREODBCODBCINST.INISQL ServerCPTimeout = 180
หมายเหตุ ตามค่าเริ่มต้น เว็บเซิร์ฟเวอร์เปิดใช้งานพูลการเชื่อมต่อของ SQL Server โดยการตั้งค่า CPTimeout เป็น 60 วินาที
การใช้การเชื่อมต่อข้ามเพจ แม้ว่าคุณจะสามารถนำการเชื่อมต่อข้ามเพจกลับมาใช้ใหม่ได้ด้วยการจัดเก็บการเชื่อมต่อไว้ในออบเจ็กต์แอปพลิเคชันของ ASP แต่การเปิดการเชื่อมต่อตลอดเวลานั้นไม่จำเป็น และไม่ได้ใช้ประโยชน์จากข้อดีของการรวมกลุ่มการเชื่อมต่ออย่างเต็มที่ ถ้าผู้ใช้จำนวนมากจำเป็นต้องเชื่อมต่อกับแอปพลิเคชันฐานข้อมูล ASP เดียวกัน วิธีการที่ดีคือการนำการเชื่อมต่อฐานข้อมูลมาใช้ใหม่โดยการวางสตริงการเชื่อมต่อข้ามเพจในวัตถุแอปพลิเคชัน ASP ตัวอย่างเช่น คุณสามารถระบุสตริงการเชื่อมต่อในขั้นตอนเหตุการณ์ Application_OnStart ของไฟล์ Global.asa ดังที่แสดงในสคริปต์ต่อไปนี้:
แอพลิเคชัน.ล็อค
แอปพลิเคชัน ("ConnectionString") = "FILEDSN=MyDatabase.dsn"
แอปพลิเคชั่นปลดล็อค
จากนั้น ในแต่ละไฟล์ ASP ที่เข้าถึงฐานข้อมูล ให้เขียน:
<OBJECT RUNAT=รหัสเซิร์ฟเวอร์=cn PROGID="ADODB.Connection"> </OBJECT>
หากต้องการสร้างอินสแตนซ์ของวัตถุการเชื่อมต่อ ให้ใช้สคริปต์ต่อไปนี้:
cn.เปิดแอปพลิเคชัน("ConnectionString")
สำหรับการเชื่อมต่อแบบเปิด คุณสามารถเขียนสคริปต์ต่อไปนี้ที่ท้ายหน้าเพื่อปิดการเชื่อมต่อ:
cn.ปิด
ในสถานการณ์ที่ผู้ใช้คนเดียวจำเป็นต้องใช้การเชื่อมต่อข้ามเพจ จะดีกว่าถ้าใช้การเชื่อมต่อวัตถุเซสชันมากกว่าวัตถุแอปพลิเคชัน
ปิดการเชื่อมต่อ ถ้าคุณต้องการใช้พูลการเชื่อมต่อให้ดีขึ้น คุณควรปิดการเชื่อมต่อฐานข้อมูลโดยเร็วที่สุด ตามค่าเริ่มต้น การเชื่อมต่อจะถูกยกเลิกหลังจากที่สคริปต์ดำเนินการเสร็จสิ้น การปิดการเชื่อมต่อเมื่อไม่จำเป็นอีกต่อไปจะช่วยลดความต้องการบนเซิร์ฟเวอร์ฐานข้อมูลและทำให้การเชื่อมต่อพร้อมใช้งานสำหรับผู้ใช้รายอื่น
คุณสามารถใช้วิธีปิดของวัตถุการเชื่อมต่อเพื่อยุติการเชื่อมต่อระหว่างวัตถุการเชื่อมต่อและฐานข้อมูล สคริปต์ต่อไปนี้เปิดการเชื่อมต่อแล้วปิด:
<% strDSN = "FILEDSN=MyDatabase.dsn"
ตั้ง cn = Server.CreateObject("ADODB.Connection")
cn.เปิด
cn.ปิด
-