ความแตกต่างระหว่าง conn.execute และ rs.open คือการใช้เมธอด conn.execute, rs.open และ command.execute นั้นแตกต่างกันมาก
โดยปกติแล้ว ในการสร้างชุดบันทึก คุณสามารถใช้
Set rs=conn.execute (SQL)
ได้หรือโดยตรง
rs=CONN.execute(SQL)
และ
ตั้งค่า rs=Server.CreateObject("ADODB.Recordset")
rs.open SQL,CONN,0,1 หรือ rs.open SQL,CONN
ในกรณีนี้ ประสิทธิภาพการเปิดมักจะดีกว่าครั้งก่อนเล็กน้อย
(ออบเจ็กต์คำสั่งมีความยืดหยุ่นมากกว่าและมีช่วงการดำเนินการที่กว้างขึ้น)
เมื่อใช้ CONN.execute คุณสามารถดำเนินการชุดถัดไป rs=conn.execute(SQL) ได้โดยตรงโดยไม่ต้องปิด
แต่ประสิทธิภาพและความเร็วจะลดลงอย่างมาก!!
มันช้ากว่าประมาณ 2~5 เท่า!! (โดยส่วนตัวแล้วฉันทดสอบสิ่งนี้ใน msSQL loop 1,000 ครั้ง หากคุณไม่เชื่อให้ทดสอบด้วยตัวเองทันที) ดังนั้นก่อนที่จะดำเนินการ rs=conn.execute ถัดไป!! เป็น
นิสัยที่ดีนะ!
เมื่อใช้ rs rs.open ของวัตถุเดียวก่อนที่จะเปิดชุดบันทึกถัดไปจะต้องปิดจอแสดงผลไม่เช่นนั้นจะเกิดข้อผิดพลาดขึ้นโดยพื้นฐานแล้วความเร็วจะเท่ากันในกรณีของ SQL, CONN, 0, 1
ดังนั้นฉันชอบ เพื่อใช้ CreateObject(" adodb.recordser" (หากไม่จำเป็นต้องแทรกชุดระเบียนหลายชุด หลายระเบียนก็ไม่ใช่ปัญหา!)
แล้วใช้ตั้งแต่ต้นจนจบ!!!
และ
ปิด เปิดและปิด ชุดสุดท้าย rs=nothing มาถึงจุดสิ้นสุด!
เมื่อคุณเปิดกล่องสมบัติ คุณจะมองเห็นทุกสิ่งในแสงสีทอง!
มีหลายสถานการณ์ที่คุณต้องใช้ open!
และ conn.execute ต้องการเปลี่ยนฟิล์มใต้ผ้าดำ~~~แอบ~~ ง่ายมาก!!!
ตัวอย่างเช่น:
rs1.open SQL1,conn,0,1
rs.open SQL,conn,1,3
ถ้า rs(0)<0 แล้ว rs(0)=0
อาร์เอส(1)=aaa
อาร์เอส(2)=bbb
rs.update 'อัพเดตชุดบันทึกและเขียนลงในฐานข้อมูล
rs.addnew 'เพิ่มบันทึกใหม่
อาร์เอส(0)=1
อาร์เอส(1)=dd
อาร์เอส(2)=คค
อาร์เอสอัปเดต
id=rs(3) rs(s) 'ช่องที่ใช้คือหมายเลขอัตโนมัติ รับรหัสหมายเลขอัตโนมัติของบันทึกใหม่ทันที //นี่เป็น
ข้อมูล
ที่ใช้กันทั่วไปมากรหัสอาร์เอส
rs1("id"=id
RS1(1)=...
-
rs1.update
rs1.close:set rs1=ไม่มีอะไร
rs.close:set rs=ไม่มีอะไร
หากใช้ CONN.execute สำหรับการดำเนินการข้างต้น จะมีการใช้ CONN.execute สี่รายการ
CONN.execute("update .."
CONN.execute("ใส่ลงในตารางที่ 1:"
rs=CONN.execute("เลือกรหัสอัตโนมัติใหม่"
CONN.execute("ใส่ลงในตารางที่ 2"
วิธีใดที่สมเหตุสมผลและชัดเจนกว่าเมื่อสรุป?
ยังมีวิธีใช้ Recordset เปิดบันทึกที่น่าสนใจอีกด้วย!!
มันค่อนข้างสับสนเมื่อฉันคิดถึงมัน
Set rs=server.CreateObject("Adodb.recordset"
ตั้งค่า rs=server.CreateObject("Adodb.recordset"
rs.open SQL1,CONN
rs.open SQL2, CONN
ตั้งค่าวัตถุสองรายการที่มีชื่อเดียวกันในเวลาเดียวกันเพื่อเปิดชุดบันทึกสองชุด และพร้อมใช้งาน!
'ตราบใดที่ชื่อคอลัมน์สอดคล้องกับข้อมูลเมตาในชุดระเบียนทั้งสองนี้
'ถ้าอย่างนั้นก็ใช้งานได้ตามปกติ!!
ขยาย
ชุด rs=server.CreateObject("Adodb.recordset"
ตั้งค่า rs=server.CreateObject("Adodb.recordset"
ตั้งค่า rs=server.CreateObject("Adodb.recordset"
ตั้งค่า rs=server.CreateObject("Adodb.recordset"
rs.open SQL1,CONN
rs.openSQL2,CONN
rs.เปิด SQL3,CONN
rs.open SQL4, CONN
ซึ่งมีขนาดใหญ่กว่าสอง rs ที่มีชื่อเดียวกัน!!
รู้สึกเหมือนเป็นการสืบค้นร่วมกับ SQL แล้วเปิดชุดบันทึก ~~~
เคยใช้แบบนี้มาแล้ว!!ไม่น่าตาพร่า!!
===============
จะใช้เมื่อไร?
นั่นเป็นเพียงจากประสบการณ์ส่วนตัวของฉัน:
หากคุณต้องการสัมผัสฐานข้อมูลเพียงครั้งเดียว ให้ใช้ดำเนินการ
หากคุณต้องการดำเนินการที่ซับซ้อนบนฐานข้อมูล วิธีที่ดีที่สุดคือใช้ rs.open