經常會遇到這(zhè)樣一些問題:
1、什(shén)麽時(shí)候使用(yòng)rs.close,什(shén)麽時(shí)候不使用(yòng)。
2、數據庫中明(míng)明(míng)有記錄,也(yě)有符合要求的(de)記錄,而rs.recordcount卻等于-1
這(zhè)些都是與rs.open與conn.execute有關,雖然這(zhè)兩個(gè)都是執行sql語句的(de),但還(hái)是有一些區(qū)别。
Rs.Open和(hé)Conn.Execute的(de)區(qū)别:
Rs.Open SQL,Conn
如果sql是delete,update,insert則會返回一個(gè)關閉的(de)記錄集,在使用(yòng)過程中不要來(lái)個(gè)rs.close在文件最後再寫rs.close中間可(kě)以來(lái)多(duō)個(gè)記錄集rs1.open sql1,conn,最後一塊關閉記錄集:rs.close rs1.close
Conn.Execute(SQL)
如果sql是delete,update,insert則會返回一個(gè)關閉的(de)記錄集,在使用(yòng)過程中不要來(lái)個(gè)rs.close在文件最後再寫rs.close中間可(kě)以來(lái)多(duō)個(gè)記錄集rs1.open sql1,conn,最後一塊關閉記錄集:rs.close rs1.close.
如果sql是update,insert,delete則應該使用(yòng)Conn.Execute(sql)也(yě)可(kě)以不要括号Conn.Execute sql
如果sql是select語句則應該使用(yòng)Set Rs=Conn.Execute(sql)括号一定要,不能省略
這(zhè)是因爲vb的(de)特性,帶返回值的(de)調用(yòng)必須加括号,不帶返回值的(de)調用(yòng)可(kě)以不要括号。
1.Conn.Execute
sql="select * from admin where username='xiaozhu'"
Set Rs=Conn.Execute(sql)
'執行完以後自動關閉記錄集
'最後隻需要關閉連接就可(kě)以了(le)
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
'可(kě)以自己設定一些參數,即鎖定和(hé)遊标的(de)移動方式
'最後要關閉記錄集和(hé)連接
Rs.Close
Set Rs=nothing
Conn.Close
Set Conn=Nothing
參數含義:
SQL的(de)值可(kě)以是SQL語句、表名、存儲過程名,也(yě)可(kě)以是數據提供者所能接受的(de)任意字符串。爲了(le)提高(gāo)性能,最好爲C參數指定合适的(de)值。
可(kě)選參數RowsAffected将返回INSERT、UPDATE或DELETE查詢執行以後所影(yǐng)響的(de)數目。這(zhè)些查詢會返回一個(gè)關閉的(de)Recordset對(duì)象。
一個(gè)SELECT查詢将返回RowsAffected值爲-1并且返回帶有一行或多(duō)行内容的(de)打開的(de)Recordset。
4.
Conn.Execute sql适合于不需返回recordset對(duì)象時(shí)使用(yòng),比如下(xià)面的(de)代碼:
sql="delete from news where id="&cstr(id)
Conn.Execute sql
如果需要返回recordset對(duì)象,則使用(yòng)如下(xià)代碼:
sql="select from news where id="&cstr(id)
Set Rs=Conn.Execute(sql)
如果去掉execute(sql)這(zhè)兒(ér)的(de)括号(即爲set rs = Conn.Execute sql),就會提示“語句未結束”這(zhè)樣的(de)錯誤提示,我翻看了(le)一下(xià)語法格式,發現有二種格式,詳解如下(xià):
格式一:Connection對(duì)象名.Execute(SQL指令)
格式二:Connection對(duì)象名.Execute(數據表名)
Conn.Execute(sql)(0)爲數據集的(de)第一個(gè)字段的(de)值
Conn.Execute(sql) 返回記錄集。
Conn.Execute sql 不返回記錄集。一般用(yòng)于插入、更新,删除等不帶返回值的(de)操作