Perbedaan antara conn.execute dan rs.open adalah penggunaan metode conn.execute, rs.open dan command.execute sangat berbeda.
Biasanya untuk membentuk record set dapat menggunakan
Set rs=conn.execute (SQL)
atau secara langsung
rs=CONN.execute(SQL)
dan
Setel rs=Server.CreateObject("ADODB.Recordset")
rs.open SQL,CONN,0,1 atau rs.open SQL,CONN
Dalam hal ini, performa open biasanya sedikit lebih baik dari yang sebelumnya.
(Objek perintah lebih fleksibel dan memiliki rentang eksekusi yang lebih luas)
Menggunakan CONN.execute, Anda dapat langsung mengeksekusi set berikutnya rs=conn.execute(SQL) tanpa menutupnya.
Namun performa dan kecepatannya akan sangat berkurang!!
Ini sekitar 2~5 kali lebih lambat!! (Saya pribadi menguji ini di loop msSQL 1000 kali, jika Anda tidak percaya, segera uji sendiri), jadi sebelum menjalankan rs=conn.execute berikutnya!! itu! Itu
ide yang bagus Kebiasaan!
Saat menggunakan rs rs.open objek tunggal, sebelum membuka kumpulan rekaman berikutnya, tampilan harus ditutup, jika tidak, kesalahan akan terjadi. Kecepatan pada dasarnya sama dalam kasus SQL, CONN, 0, 1,
jadi saya suka untuk menggunakan CreateObject(" adodb.recordser" (Jika tidak perlu menyisipkan beberapa kumpulan catatan, banyak catatan tidak menjadi masalah!)
Kemudian gunakan dari awal sampai akhir!!!
Buka dan tutup. Buka dan tutup. Set terakhir rs=tidak ada yang berakhir!
Lebih penting lagi, buka menyediakan cara yang sangat fleksibel untuk mengoperasikan banyak atribut metadata database!!
Saat Anda membuka kotak harta karun, Anda dapat melihat semuanya dalam cahaya keemasan!
Ada banyak situasi di mana Anda harus menggunakan open!
Dan conn.execute ingin mengganti film di bawah kain hitam~~~menyelinap~~sangat sederhana!!!
Misalnya:
rs1.open SQL1,conn,0,1
rs.open SQL,sambungan,1,3
jika rs(0)<0 maka rs(0)=0
rs(1)=aaa
rs(2)=bbb
rs.update 'Perbarui kumpulan data dan tuliskan ke database
rs.addnew 'Tambahkan data baru
rs(0)=1
rs(1)=dd
rs(2)=kkk
rs.update
id=rs(3) rs(s) 'Field yang diambil adalah nomor otomatis. Segera dapatkan nomor id otomatis dari record baru. //Ini sangat umum
digunakan nomor identitas rs.
rs1("id"=id
rs1(1)=...
..
rs1.perbarui
rs1.close:set rs1=tidak ada
rs.close:set rs=tidak ada
Jika CONN.execute digunakan untuk operasi di atas, empat CONN.execute akan digunakan
CONN.execute("update .."
CONN.execute("masukkan ke tabel 1:"
rs=CONN.execute("pilih id otomatis baru"
CONN.execute("masukkan ke tabel 2"
Metode mana yang sekilas lebih logis dan jelas?
Ada juga cara menarik untuk menggunakan Recordset terbuka untuk merekam!!
Agak membingungkan ketika saya memikirkannya.
Set rs=server.CreateObject("Adodb.recordset"
Setel rs=server.CreateObject("Adodb.recordset"
rs.open SQL1,CONN
rs.open SQL2, CONN
menyetel dua objek dengan nama yang sama secara bersamaan untuk membuka dua kumpulan rekaman, dan keduanya tersedia!
'Selama nama kolomnya konsisten dengan metadata di dua kumpulan data ini
'Kalau begitu operasinya normal!!
Perluas
Set rs=server.CreateObject("Adodb.recordset"
Setel rs=server.CreateObject("Adodb.recordset"
Setel rs=server.CreateObject("Adodb.recordset"
Setel rs=server.CreateObject("Adodb.recordset"
rs.open SQL1,CONN
rs.openSQL2,CONN
rs.buka SQL3,CONN
rs.open SQL4, CONN,
yang lebih besar dari dua rs dengan nama yang sama!!
Rasanya seperti kueri gabungan dengan SQL dan kemudian membuka kumpulan data~~~
Saya pernah menggunakannya seperti ini sebelumnya!! Seharusnya tidak menyilaukan!!
===============
Kapan pakai apa?
Itu hanya berdasarkan pengalaman pribadi saya:
Jika Anda hanya perlu menyentuh database satu kali, gunakan eksekusi
Jika Anda ingin melakukan operasi kompleks pada database, yang terbaik adalah menggunakan rs.open