rs.open與connection.execute(sql)的區別

zhengnx發表於2015-05-12

[轉]rs.open與connection.execute(sql)的區別

(2013-04-08 16:18:53)

 如果sql是update,insert,delete則應該使用conn.execute(sql)也可以不要括號conn.execute sql
 如果sql是select語句則應該使用set rs=conn.execute(sql)括號一定要,不能省略:這是因為vbscript的特性,帶返回值的呼叫必須加括號,不帶返回值的呼叫可以不要括號。

 不管是rs.open sql,conn還是conn.execute(sql) [這裡的SQL是delete,update,insert]執行以後都會返回一個關閉的記錄集,也就是說如果sql是插入,更新,刪除語句,那麼set rs=conn.execute(sql)中的RS就沒什麼意義。

1.conn.execute
sql="select * from admin where username='xiaozhu'"
set rs=conn.execute(sql)
執行完以後自動關閉記錄集
最後只需要關閉連線就可以了
conn.close
set conn=nothing


2.rs.open
set rs=server.createobject("adodb.recordset")
sql="select * from admin where username='xiaozhu'"
rs.open sql,conn,1,1
可以自己設定一些引數,即鎖定和遊標的移動方式
最後要關閉記錄集和連線
rs.close
set rs=nothing
conn.close
set conn=nothing


3.command.execute
sql="select * from admin where username='xiaozhu'"
set rs=command.execute(sql)

1.
set rs=conn.execute("如果是select語句") 得到的rs.recordcount=-1
rs.open sql,conn("sql為select語句") 得到的rs.recordcount為正常的記錄數

2.
rs.open是開啟資料庫 conn.execute 是執行SQL指令
set rs=conn.execute(insert,update,delete)返回一個關閉了的記錄集
set rs=conn.execute(select)返回一個沒有關閉的記錄集

3.
CONN.EXECUTE(SQL,RowsAffected,C)
引數含義:
SQL的值可以是SQL語句、表名、儲存過程名,也可以是資料提供者所能接受的任意字串。為了提高效能,最好為C引數指定合適的值
可選引數RowsAffected將返回INSERT、UPDATE或DELETE查詢執行以後所影響的數目。這些查詢會返回一個關閉的Recordset物件。
一個SELECT查詢將返回RowsAffected值為-1並且返回帶有一行或多行內容的開啟的Recordset。
4.

conn.execute sql適合於不需返回recordset物件時使用,比如下面的程式碼:
sql="delete from enews where id="&cstr(id)
conn.execute sql

如果需要返回recordset物件,則使用如下程式碼:
sql="select from enews where id="&cstr(id)
set rs = conn.execute(sql)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7868752/viewspace-1649966/,如需轉載,請註明出處,否則將追究法律責任。

相關文章