บทความนี้จะแนะนำคำอธิบายโดยละเอียดของพารามิเตอร์วิธีการ adodb.recordset.open(rs.open) เป็นหลัก เพื่อนที่ต้องการความช่วยเหลือสามารถอ้างอิงถึงมันได้
วัตถุชุดระเบียน ADO
วัตถุชุดระเบียน ADO ใช้เพื่อเก็บชุดระเบียนจากตารางฐานข้อมูล วัตถุชุดระเบียนประกอบด้วยระเบียนและคอลัมน์ (เขตข้อมูล)
ใน ADO วัตถุนี้เป็นวัตถุที่สำคัญที่สุด และใช้บ่อยที่สุดเพื่อดำเนินการกับข้อมูลในฐานข้อมูล
ProgID
ตั้ง objRecordset=Server.CreateObject(ADODB.recordset)
เมื่อคุณเปิดชุดระเบียนเป็นครั้งแรก ตัวชี้ระเบียนปัจจุบันจะชี้ไปที่ระเบียนแรก และคุณสมบัติ BOF และ EOF จะเป็นเท็จ หากไม่มีเรกคอร์ด คุณสมบัติ BOF และ EOF จะเป็น True
วัตถุชุดระเบียนสามารถรองรับการอัปเดตได้สองประเภท:
อัพเดตทันที - เมื่อเรียกใช้เมธอด Update การเปลี่ยนแปลงทั้งหมดจะถูกเขียนลงฐานข้อมูลทันที การอัปเดตเป็นชุด - ผู้ให้บริการจะแคชการเปลี่ยนแปลงหลายรายการ จากนั้นถ่ายโอนการเปลี่ยนแปลงเหล่านี้ไปยังฐานข้อมูลโดยใช้วิธี UpdateBatch
ใน ADO มีการกำหนดเคอร์เซอร์ (ตัวชี้) ที่แตกต่างกัน 4 ประเภท:
• เคอร์เซอร์แบบไดนามิก - ช่วยให้คุณสามารถดูการเพิ่มเติม การเปลี่ยนแปลง และการลบที่ทำโดยผู้ใช้รายอื่น
•เคอร์เซอร์ชุดคีย์ - คล้ายกับเคอร์เซอร์แบบไดนามิก ยกเว้นว่าคุณไม่สามารถมองเห็นส่วนเพิ่มเติมที่ทำโดยผู้ใช้รายอื่น และจะป้องกันไม่ให้คุณเข้าถึงบันทึกที่ถูกลบโดยผู้ใช้รายอื่น การเปลี่ยนแปลงข้อมูลที่ทำโดยผู้ใช้รายอื่นจะยังคงมองเห็นได้
•เคอร์เซอร์แบบคงที่ - ให้สำเนาแบบคงที่ของชุดระเบียนที่สามารถใช้เพื่อค้นหาข้อมูลหรือสร้างรายงาน นอกจากนี้ การเพิ่มเติม การเปลี่ยนแปลง และการลบที่ทำโดยผู้ใช้รายอื่นจะไม่สามารถมองเห็นได้ นี่เป็นประเภทเคอร์เซอร์เดียวที่ได้รับอนุญาตเมื่อคุณเปิดวัตถุชุดระเบียนไคลเอ็นต์
•เคอร์เซอร์ไปข้างหน้าเท่านั้น - อนุญาตให้เลื่อนไปข้างหน้าในชุดระเบียนเท่านั้น นอกจากนี้ การเพิ่มเติม การเปลี่ยนแปลง และการลบที่ทำโดยผู้ใช้รายอื่นจะไม่สามารถมองเห็นได้
ชนิดของเคอร์เซอร์สามารถตั้งค่าผ่านคุณสมบัติ CursorType หรือพารามิเตอร์ CursorType ในวิธีการ Open
หมายเหตุ: ผู้ให้บริการบางรายอาจไม่สนับสนุนวิธีการและคุณสมบัติทั้งหมดของวัตถุ Recordset
เพื่อนที่ต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับวัตถุ ADO Recordset สามารถไปที่นี่เพื่อดูเนื้อหาเพิ่มเติม
หากเป็นเพียงการอ่านและไม่เกี่ยวข้องกับการอัพเดต ให้ใช้ 1, 1
หากเกี่ยวข้องกับการอ่านและอัปเดต คุณสามารถใช้ 1,3 หรือ 3,2
ต้นแบบวิธีการเปิดของวัตถุ Recordset:
Open([แหล่งที่มา],[ActiveConnection],[CursorType],[LockType],[ตัวเลือก])
ประเภทเคอร์เซอร์ ประเภทเคอร์เซอร์:
ค่าคงที่ adOpenForwardOnly = 0
เคอร์เซอร์ไปข้างหน้าเป็นเคอร์เซอร์เริ่มต้นและให้ประสิทธิภาพการทำงานที่เร็วที่สุด ใช้เพื่อเปิดชุดระเบียนและรับผลลัพธ์ทั้งหมดตามลำดับจากคู่หนึ่งไปยังอีกคู่หนึ่งจนจบ ไม่รองรับการเลื่อนย้อนกลับ และอนุญาตให้มีการเคลื่อนไหวทางเดียวระหว่างผลลัพธ์เท่านั้น
ค่าคงที่ adOpenKeyset = 1
เคอร์เซอร์แบบคงที่จะแสดงสถานะของข้อมูลในตารางเมื่อเปิดเคอร์เซอร์ครั้งแรก เคอร์เซอร์ไม่สามารถค้นหาได้ว่าแถวข้อมูลในตารางด้านล่างได้รับการอัปเดต ลบ หรือเพิ่มข้อมูลใหม่แล้ว อย่างไรก็ตาม เคอร์เซอร์แบบคงที่สามารถเลื่อนไปข้างหน้าและข้างหลังระหว่างผลลัพธ์ได้ ซึ่งต่างจากเคอร์เซอร์ทวีปซึ่งสามารถเลื่อนไปข้างหน้าได้เท่านั้น
ค่าคงที่ adOpenDynamic = 2
เคอร์เซอร์ที่ขับเคลื่อนด้วยแป้นพิมพ์สามารถสืบค้นการเปลี่ยนแปลงบางส่วนในแถวข้อมูลที่ซ่อนอยู่ในตารางได้ แต่ไม่ใช่ทั้งหมด โดยเฉพาะอย่างยิ่งมันสะท้อนให้เห็นได้อย่างแม่นยำว่าข้อมูลได้รับการอัปเดตหรือไม่ แต่ไม่สามารถค้นหาได้ว่าผู้ใช้รายอื่นลบแถวข้อมูลแล้วหรือไม่ (แถวข้อมูลที่ถูกลบจะทิ้งช่องโหว่ไว้ในชุดระเบียน) เคอร์เซอร์ที่ขับเคลื่อนด้วยแป้นพิมพ์รองรับการเลื่อนดูผลลัพธ์ไปข้างหน้าและย้อนกลับ
ค่าคงที่ adOpenStatic = 3
เคอร์เซอร์แบบไดนามิกเป็นประเภทเคอร์เซอร์ที่สมบูรณ์ที่สุด เมื่อเคอร์เซอร์เปิดอยู่ คุณสามารถสืบค้นการเปลี่ยนแปลงที่ทำกับตารางโดยผู้ใช้รายอื่นได้ และรองรับการเลื่อน
LockTypeประเภทล็อค:
ค่า Const adLockReadOnly = 1
ประเภทการล็อคเริ่มต้น การล็อคแบบอ่านอย่างเดียวช่วยให้ผู้ใช้หลายคนสามารถอ่านข้อมูลเดียวกันในเวลาเดียวกันได้ แต่ไม่สามารถเปลี่ยนแปลงข้อมูลได้
ค่าคงที่ adLockPessimistic = 2
เปิดวัตถุข้อมูลด้วยการล็อคในแง่ร้าย วิธีการนี้จะถือว่าผู้ใช้รายอื่นจะสามารถเข้าถึงข้อมูลได้ในขณะที่คุณกำลังแก้ไขเรกคอร์ด ณ จุดนี้เมื่อคุณเริ่มแก้ไขบันทึก ผู้ใช้รายอื่นจะไม่สามารถเข้าถึงข้อมูลได้
Const adLockOptimistic = 3
เปิดวัตถุข้อมูลโดยใช้การล็อคในแง่ดี วิธีการนี้จะถือว่าไม่มีผู้ใช้รายอื่นเข้าถึงข้อมูลในขณะที่คุณกำลังแก้ไขเรกคอร์ด ผู้ใช้รายอื่นไม่สามารถเข้าถึงบันทึกได้จนกว่าจะมีการเปลี่ยนแปลง
ค่า Const adLockBatchOptimistic = 4
ใช้ประเภทนี้เมื่อดำเนินการอัพเดตแบบหลายแถว
พารามิเตอร์ตัวเลือก:
พารามิเตอร์ตัวเลือกระบุชนิดของสตริงคำสั่งที่ใช้ในการเปิดชุดระเบียน การบอกข้อมูล ADO เกี่ยวกับเนื้อหาของสตริงที่กำลังดำเนินการจะช่วยให้ดำเนินการสตริงคำสั่งได้อย่างมีประสิทธิภาพ
adCMDTable. สตริงที่กำลังดำเนินการประกอบด้วยชื่อของตาราง
adCMDข้อความ สตริงที่กำลังดำเนินการมีข้อความคำสั่ง
adCMDSstoredProc. สตริงที่กำลังดำเนินการประกอบด้วยชื่อกระบวนงานที่เก็บไว้
adCMDUไม่ทราบ ไม่ได้ระบุเนื้อหาของสตริง (นี่คือค่าเริ่มต้น)
พูดง่ายๆ ก็คือ:
RS.เปิด SQL,CONN,A,B
ตอบ: ADOPENFORWARDONLY (=0) เป็นแบบอ่านอย่างเดียว และบันทึกข้อมูลปัจจุบันสามารถย้ายลงด้านล่างได้เท่านั้น
ADOPENSTATIC (=3) อ่านอย่างเดียว บันทึกข้อมูลปัจจุบันสามารถย้ายได้อย่างอิสระ
ADOPENKEYSET(=1) สามารถอ่านและเขียนได้ และสามารถย้ายบันทึกข้อมูลปัจจุบันได้อย่างอิสระ
ADOPENDYNAMIC(=2) สามารถอ่านและเขียนได้ บันทึกข้อมูลปัจจุบันสามารถย้ายได้อย่างอิสระ และสามารถดูบันทึกใหม่ได้
B: ค่าเริ่มต้น ADLOCKREADONLY(=1) ใช้เพื่อเปิดบันทึกแบบอ่านอย่างเดียว
ADLOCKPESSIMISTIC(=2) การล็อคในแง่ร้าย
ADLOCKOPTIMISTIC(=3) การล็อคในแง่ดี
ADLOCKBATCHOPTIMISTIC(=4) การล็อคเชิงบวกแบบแบตช์