程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP技巧 >> Rs.Open和Conn.Execute的區別

Rs.Open和Conn.Execute的區別

編輯:ASP技巧

經常會遇到這樣一些問題:
1、什麼時候使用rs.close,什麼時候不使用。
2、數據庫中明明有記錄,也有符合要求的記錄,而rs.recordcount卻等於-1
這些都是與rs.open與conn.execute有關,雖然這兩個都是執行sql語句的,但還是有一些區別。

Rs.Open和Conn.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,update,insert則會返回一個關閉的記錄集,在使用過程中不要來個rs.close在文件最後再寫rs.close中間可以來多個記錄集rs1.open sql1,conn,最後一塊關閉記錄集:rs.close rs1.close.
如果sql是update,insert,delete則應該使用Conn.Execute(sql)也可以不要括號Conn.Execute sql
如果sql是select語句則應該使用Set Rs=Conn.Execute(sql)括號一定要,不能省略
這是因為vb的特性,帶返回值的調用必須加括號,不帶返回值的調用可以不要括號。

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 news where id="&cstr(id)
Conn.Execute sql

如果需要返回recordset對象,則使用如下代碼:
sql="select from news where id="&cstr(id)
Set Rs=Conn.Execute(sql)

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

格式一:Connection對象名.Execute(SQL指令)
格式二:Connection對象名.Execute(數據表名)


Conn.Execute(sql)(0)為數據集的第一個字段的值
Conn.Execute(sql) 返回記錄集。
Conn.Execute sql 不返回記錄集。一般用於插入、更新,刪除等不帶返回值的操作

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved