通常形成記錄集可以使用
Set rs=conn.execute(SQL) 或直接rs=CONN.execute(SQL)
和 Set rs=Server.CreateObject("ADODB.Recordset")
rs.open SQL,CONN,0,1 或 rs.open SQL,CONN
這種情況 通常open比上一個(gè)性能要好那么一丁點(diǎn)
( command對象更靈活,執行范圍更廣)
使用 CONN.execute 可以不用關(guān)閉直接執行下一個(gè) set rs=conn.execute(SQL)
大約要慢 2~5倍!!(這是在msSQL循環(huán)1000次的),所以執行下一個(gè) rs=conn.execute之前!!一定要關(guān)閉掉!
使用單一對象的rs rs.open在open下一個(gè)記錄集之前,必需要求顯示關(guān)閉,否則出錯,速度在SQL,CONN,0,1的情況下可前者基本一樣
所以使用設置一個(gè) CreateObject("adodb.recordser")
最后一個(gè) set rs=nothing 化上句號!
open提供非常靈活的操作數據庫元數據的非常多的屬性!!
有很多情況下是非得用open來(lái)做的!
而conn.execute 非常單一!!!
比如:
rs1.open SQL1,conn,0,1
rs.open SQL,conn,1,3
if rs(0)<0 then rs(0)=0
rs(1)=aaa
rs(2)=bbb
rs.update ' 更新記錄集寫(xiě)到數據庫
rs.addnew '加一條新記錄
rs(0)=1
rs(1)=ddd
rs(2)=kkk
rs.update
id=rs(3) rs(s) '取的字段是自動(dòng)編號 立即獲得新記錄的自動(dòng)編號id //這是非常常用的
rs1.addnew 對rs1添加關(guān)連使用id rs的新記錄
rs1("id"=id
rs1(1)=...
..
rs1.update
rs1.close:set rs1=nothing
rs.close:set rs=nothing
上面的操作如果采用CONN.execute 則要用到四個(gè) CONN.execute
CONN.execute("update .."
CONN.execute("insert into 表1:"
rs=CONN.execute("select 新的自動(dòng) id"
CONN.execute("insert into 表二"
那一種方法邏輯條理更好,一目了然
還有一個(gè)有趣的使用Recordset open記錄的方法!!
Set rs=server.CreateObject("Adodb.recordset"
Set rs=server.CreateObject("Adodb.recordset"
rs.open SQL1,
rs.open SQL2,
這是同時(shí)設置同名的兩個(gè)對象來(lái)打開(kāi)兩個(gè)記錄集,而且是可用的!
'只要取的列名合乎這兩個(gè)記錄集中元數據
'則正常操作!!
擴展開(kāi)來(lái)
Set rs=server.CreateObject("Adodb.recordset"
Set rs=server.CreateObject("Adodb.recordset"
Set rs=server.CreateObject("Adodb.recordset"
Set rs=server.CreateObject("Adodb.recordset"
rs.open SQL1,
rs.open SQL2,
rs.open SQL3,
rs.open SQL4,
這樣大于二個(gè)同名的 rs我還沒(méi)試過(guò)!!
感覺(jué)有點(diǎn)相當與 SQL聯(lián)合查詢(xún)再打開(kāi)記錄集~~~
如果只需要一筆帶過(guò)的碰碰數據庫,用execute
如果要對數據庫作比較龐雜的操作!則最好用 rs.open
注意:不管是rs.open sql,conn還是conn.execute(sql) [這里的SQL是delete,update,insert]執行以后都會(huì )返回一個(gè)關(guān)閉的記錄集
也就是說(shuō)如果sql是插入,更新,刪除語(yǔ)句,那么set rs=conn.execute(sql)中的RS就沒(méi)什么意義。
聯(lián)系客服