แนะนำ: ใน ASP จะใช้การส่งออกข้อมูลจากฐานข้อมูล DBF ไปยังตาราง SQL คำอธิบาย: โครงสร้างฐานข้อมูล DBF จะต้องสอดคล้องกับตาราง SQL ต่อไปนี้เป็นเนื้อหาอ้างอิง: <% dim conndbf_dbf, driver_dbf, sourcetype_dbf, dbpath_dbf dim conn_
8.4.3 การสร้างชุดบันทึกมันง่ายมากที่จะสร้างชุดระเบียนซึ่งทำได้โดยการเรียกใช้วิธีการเปิดของวัตถุ RecordSet:
Recordset.open [แหล่งที่มา], [Activeconnection], [Cursortype], [Locktype], [ตัวเลือก]
พารามิเตอร์และคำอธิบายแสดงในตารางที่ 8-3:
ตารางที่ 8-3 พารามิเตอร์และคำอธิบายของวิธีการเปิด
พารามิเตอร์
อธิบาย
แหล่งที่มา
แหล่งข้อมูล อาจเป็นชื่อตารางในฐานข้อมูลแบบสอบถามหรือขั้นตอนที่เก็บไว้, สตริง SQL, วัตถุคำสั่งหรือวัตถุคำสั่งอื่น ๆ ที่เหมาะสมสำหรับผู้ให้บริการ
Activeconnection
การเชื่อมต่อที่ใช้โดยชุดบันทึก อาจเป็นสตริงการเชื่อมต่อหรือวัตถุการเชื่อมต่อแบบเปิด
เคอร์สโคป
ประเภทของเคอร์เซอร์ที่ใช้ ต้องเป็นหนึ่งในประเภทเคอร์เซอร์ที่กำหนดค่าเริ่มต้นคือ adforwardonly
การล็อค
ประเภทล็อคที่ใช้ ต้องเป็นหนึ่งในประเภทล็อคที่กำหนดค่าเริ่มต้นคือ adlockreadonly
ตัวเลือก
บอกผู้ให้บริการว่าเนื้อหาของพารามิเตอร์ต้นทางคืออะไรเช่นตารางสตริงข้อความ ฯลฯ
ตัวอย่างเช่นในการเปิดระเบียนบนตารางผู้เขียนในผับฐานข้อมูล:
ผู้ให้บริการสลัว
ตั้งค่า rsauthors = server.createObject (adodb.recordset)
rsauthors.open ผู้เขียน, strconn
'ทำอะไรที่นี่
rsauthors.close
ตั้งค่า rsauthors = ไม่มีอะไร
โปรดทราบว่ามีพารามิเตอร์หลายตัวที่ไม่ได้ระบุ ในความเป็นจริงพารามิเตอร์ทั้งหมดเป็นทางเลือกและคุณสามารถตั้งค่าคุณสมบัติที่สอดคล้องกันสำหรับชุดระเบียนก่อนเปิด:
ผู้ให้บริการสลัว
ตั้งค่า rsauthors = server.createObject (adodb.recordset)
กับ rsauthors
.Source = ผู้เขียน
.activeConnection = strconn
.cursortype = นำไปใช้ล่วงหน้าอย่างเดียว
.lockType = ADLOCKREADONLY
.เปิด
จบลงด้วย
'ทำอะไรที่นี่
rsauthors.close
ตั้งค่า rsauthors = ไม่มีอะไร
เมื่อเปิดชุดเร็กคอร์ดแล้วตัวชี้ปัจจุบันจะอยู่ในบันทึกโดยอัตโนมัติในบันทึกแรก หากไม่มีการบันทึกในชุดบันทึกทั้งแอตทริบิวต์ EOF และ BOF นั้นเป็นจริง:
rsauthors.open ผู้เขียน, strconn
ถ้า rsauthors.bof และ rsauthors.eof แล้ว
'RecordSet ว่างเปล่า
สิ้นสุดถ้า
1. พารามิเตอร์ตัวเลือก
พารามิเตอร์ตัวเลือกของวิธีการเปิดอนุญาตให้ระบุเนื้อหาข้อความคำสั่ง มันสามารถเป็นหนึ่งในค่าคงที่ CommandTypeenum ต่อไปนี้:
ADCMDTEXT: คำสั่งข้อความเช่นสตริง SQL
Adcmdtable: ชื่อตาราง
ADCMDSTORDPROC: ชื่อขั้นตอนที่เก็บไว้
ADCMDFILE: ชื่อไฟล์ของชุดระเบียนที่บันทึกไว้
ADCMDTABLEDIRECT: ชื่อตาราง
ADCMDURLBIND: ที่อยู่ URL
ความแตกต่างระหว่าง ADCMDTable และ ADCMDTABELDIRECT นั้นเล็กมาก หากคุณต้องการใช้คอลัมน์ทั้งหมดในตารางการใช้ ADCMDTABELDIRECT จะทำให้การทำงานเร็วขึ้นเนื่องจาก ADO ดำเนินการเพิ่มประสิทธิภาพภายใน
หากไม่ได้ระบุประเภทคำสั่ง ADO จะต้องคำนวณประเภทของคำสั่งที่ดำเนินการซึ่งจะส่งผลให้ค่าใช้จ่ายเพิ่มเติม
มีอีกสองตัวเลือกที่นี่: Adcmdunspecified หมายความว่าไม่มีประเภทที่ระบุ Adcmdunknow หมายความว่าไม่ทราบประเภทของคำสั่ง พวกเขาอาจไม่ได้ใช้โดยทั่วไป
ตัวเลือกเพิ่มเติม
พารามิเตอร์ตัวเลือกสามารถเป็นค่าคงที่ใด ๆ ข้างต้นได้ แต่สามารถเพิ่มค่าคงที่ executeOptionEnum ต่อไปนี้ได้:
Adasyncexcute: ดำเนินการคำสั่งแบบอะซิงโครนัส
ADASYNCFETCH: หลังจากได้รับชุดแถวเริ่มต้นได้รับแถวที่เหลืออะซิงโครนัส
ADASYNCFETCHBLOCKING: ยกเว้นการได้รับการบันทึกและไม่ป้องกันไม่ให้คำสั่งจากการทำงานส่วนอื่น ๆ จะคล้ายกับ ADASyncFetch
adexechtenorecords: คำสั่งส่งคืนไม่มีระเบียน
การประมวลผลแบบอะซิงโครนัสหมายความว่าการดำเนินการจะดำเนินการในพื้นหลังคุณสามารถเรียกใช้คำสั่งจากนั้นทำงานอื่น ๆ โดยไม่ต้องรอให้พวกเขาเสร็จสมบูรณ์ (การดำเนินการแบบซิงโครนัส) สิ่งนี้สะดวกโดยเฉพาะอย่างยิ่งเมื่อสร้างอินเทอร์เฟซผู้ใช้เนื่องจากสามารถส่งคืนจากการดำเนินการคำสั่งเพื่อแสดงเนื้อหาบางอย่างให้กับผู้ใช้ในขณะที่การเก็บข้อมูลยังคงอยู่ในพื้นหลัง สิ่งนี้ไม่ได้มีประโยชน์มากสำหรับโปรแกรมเมอร์ ASP เมื่อส่งคืนชุดบันทึกเนื่องจากภาษาสคริปต์ไม่รองรับเหตุการณ์ ADO ดังนั้นจึงไม่เป็นที่ทราบแน่ชัดเมื่อชุดระเบียนเสร็จสิ้นการเปลี่ยนแปลง เมื่อประมวลผลการอัปเดตให้ลบหรือแทรกคำสั่งข้อมูลและไม่ส่งคืนชุดระเบียนการดำเนินการแบบอะซิงโครนัสสามารถใช้งานได้เช่นหากคุณไม่สนใจผลลัพธ์
ในทางกลับกันตัวเลือก adexecutenorecords มีประโยชน์มาก มันบอกให้ ADO ดำเนินการคำสั่งที่ไม่ส่งคืนข้อมูลใด ๆ ดังนั้นจึงไม่จำเป็นต้องสร้างชุดระเบียน (อาจว่างเปล่าในระยะสั้น) สิ่งนี้จะเพิ่มความเร็วในการเรียกใช้การดำเนินการแบบสอบถามสำหรับการอัปเดตหรือการเพิ่มข้อมูล
ในการเพิ่มหนึ่งในตัวเลือกเหล่านี้คุณสามารถใช้หรือสัญลักษณ์ (เทียบเท่ากับเครื่องหมายบวก)
adcmdstoredproc หรือ adexecutenorecords
adcmdstoreproc adexecutenorecords
ในบทถัดไปคุณจะเห็นการแนะนำรายละเอียดเพิ่มเติมเกี่ยวกับเนื้อหาที่เกี่ยวข้องเนื่องจากจะมีประโยชน์มากขึ้นเมื่อจัดการกับคำสั่ง (แทนที่จะเป็นชุดบันทึก)
2. ย้ายในชุดบันทึก
เมื่อเปิดชุดเร็กคอร์ดแล้วมักจะจำเป็นต้องสำรวจแต่ละระเบียน สิ่งนี้ต้องการการใช้แอตทริบิวต์ EOF เมื่อถึงจุดสิ้นสุดของชุดบันทึก EOF จะกลายเป็นจริงเนื่องจากสามารถสร้างลูปได้เช่นนี้:
rsauthors.open ผู้เขียน, strconn
ในขณะที่ไม่ใช่ rsauthors.eof
Response.write rsauthors (au_lname :) &, & _
rsauthors (au_fname) & <br>
rsauthors.movenext
ใช้
ตัวอย่างข้างต้นลูปจนกว่าแอตทริบิวต์ EOF จะเป็นจริงก่อนที่จะออก วิธี Movenext ใช้เพื่อย้ายไปยังระเบียนถัดไป
หากชุดระเบียนอนุญาตให้มีการเคลื่อนไหวย้อนหลังคุณสามารถใช้วิธีการ MoveReprevious ในกรณีนี้จะต้องตรวจพบค่าแอตทริบิวต์ BOF ในลูป นอกจากนี้ยังมีวิธีการ MoveFirst และ Movelast ที่ย้ายไปยังระเบียนแรกและครั้งสุดท้ายตามลำดับ:
rsauthors.open ผู้เขียน, strconn, appendynamic
'ตอนนี้ในบันทึกแรก
rsauthors.movelast
'ตอนนี้ในบันทึกล่าสุด
rsauthors.moveprevious
rsauthors.moveprevious
'ตอนนี้สามแถวจากจุดสิ้นสุดของชุดบันทึก
rsauthors.movefirst
กลับมาที่จุดเริ่มต้นอีกครั้ง
3. ใช้คอลเลกชันฟิลด์
คอลเลกชันฟิลด์มีวัตถุฟิลด์สำหรับแต่ละฟิลด์ (คอลัมน์) ในชุดระเบียน คอลเลกชันฟิลด์เป็นคอลเลกชันเริ่มต้นของชุดบันทึกดังนั้นจึงสามารถละเว้นได้เมื่อเข้าถึงฟิลด์เช่นเดียวกับในขณะที่ ... ตัวอย่างด้านบน ดังนั้นจึงมีหลายวิธีในการเข้าถึงฟิลด์:
rsauthors.fields (au_lname) .Value
rsauthors (au_lname) .Value
rsauthors (1) .Value
rsauthors.fields (1) .Value
คุณสามารถใช้ชื่อฟิลด์หรือใช้บิตในคอลเลกชัน
แบ่งปัน: ASP ดำเนินการส่งการแจ้งเตือนทางอีเมลในขณะที่ส่งแบบฟอร์มไปยังฐานข้อมูล ต่อไปนี้เป็นเนื้อหาที่ยกมา: <% dim objcdomail set objcdomail = server.createObject (cdonts.newmail) objcdomail.from = xxx@h