1. 程式人生 > 程式設計 >ASP中RecordSet Open和Connection.Execute一些區別與細節分享

ASP中RecordSet Open和Connection.Execute一些區別與細節分享

rs.open sql,conn:如果sql是delete,update,insert則會返回一個關閉的記錄集,在使用過程中不要來個rs.close在檔案最後再寫rs.close
中間可以來多個記錄集rs1.open sql1,conn,最後一塊關閉記錄集:rs.close rs1.close
conn.execute(sql) 如果sql是delete,conn,最後一塊關閉記錄集:rs.close rs1.close.
如果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,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,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)

如果去掉execute(sql)這兒的括號(即為set rs = conn.execute sql),就會提示“語句未結束”這樣的錯誤提示,我翻看了一下語法格式,發現有二種格式,詳解如下:
格式一:Connection物件名.Execute(SQL指令).
格式二:Connection物件名.Execute(資料表名)。

rs.open sql,conn
rs.open sql,1
rs.open sql,3,2
rs.open sql,3

關於上面語句中後面的數字都代表什麼意思?還有省略數字(rs.open sql,conn)時預設的是哪一個?

最佳答案

RS.OPEN SQL,CONN,A,B

A: ADOPENFORWARDONLY(=0) 只讀,且當前資料記錄只能向下移動
ADOPENKEYSET(=1) 可讀寫,當前資料記錄可自由移動
ADOPENDYNAMIC(=2) 可讀寫,當前資料記錄可自由移動,可看到新增記錄
ADOPENSTATIC(=3) 只讀,當前資料記錄可自由移動

B: ADLOCKREADONLY(=1) 預設鎖定型別,記錄集是隻讀的,不能修改記錄
ADLOCKPESSIMISTIC(=2) 悲觀鎖定,當修改記錄時,資料提供者將嘗試鎖定記錄以確保成功地編輯記錄。只要編輯一開始,則立即鎖住記錄。
ADLOCKOPTIMISTIC(=3) 樂觀鎖定 ,直到用Update方法提交更新記錄時才鎖定記錄。
ADLOCKBATCHOPTIMISTIC(=4) 批量樂觀鎖定,允許修改多個記錄,只有呼叫UpdateBatch方法後才鎖定記錄。
當不需要改動任何記錄時,應該使用只讀的記錄集,這樣提供者不用做任何檢測。對於一般的使用,樂觀的鎖定可能是最好的選擇,因為記錄只被鎖定一小段時間, 資料在這段時間被更新。這減少了資源的使用。

到此這篇關於ASP中RecordSet Open和Connection.Execute一些區別與細節分享的文章就介紹到這了,更多相關RecordSet Open和Connection.Execute內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!