常常会碰到如许一些题目:
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
参数寄义:
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 不前往记实集。普通用于拔出、更新,删除等不带前往值的操纵