简单的说:set rs=conn.execute(sql)创建了记录集对象的一个实例,从数据库返回查询结果,但这时的记录集数据指针只能向下移,而不能向上移动,既不能执行movefirst,moveprevious指令。利用rs.open(sql,conn)可以完全的操作数据库。这些都是asp中用的。
adodb.Recordset 中Rs.Open(Sql,Conn)可以设置游标类型,锁类型等,
Conn.Execute(Sql)返回的是一个只能向下移的游标,一般用于简单的数据库操作,
比如Conn.Execute(select getdate())(0).value获取数据库时间等.
1. RS.OPEN SQL,CONN,A,B,C
2.
CONN.EXECUTE(SQL,RowsAffected,C)
参数含义:
SQL的值可以是SQL语句、表名、存储过程名,也可以是数据提供者所能接受的任意字符串。为了提高性能,最好为C参数指定合适的值
可选参数RowsAffected将返回INSERT、UPDATE或DELETE查询执行以后所影响的数目。这些查询会返回一个关闭的Recordset对象。
一个SELECT查询将返回RowsAffected值为-1并且返回带有一行或多行内容的打开的Recordset。
EX:
<%
set Conn=Server.CreateObject("ADODB.Connection")
Conn.open "Provider=SQLOLEDB;Password=xiaolu;User ID=sa;Database=Test;Data Source =127.0.0.1"
conn.execute "update Table1 set Col1='123'",RowsAffected,&H0001
Response.Write RowsAffected&" 行受到影响"
Conn.close
Set Conn=Nothing
%>
A:
ADOPENFORWARDONLY(=0)
只读,且当前数据记录只能向下移动
ADOPENKEYSET(=1)
只读,当前数据记录可自由移动
ADOPENDYNAMIC(=2)
可读写,当前数据记录可自由移动
ADOPENSTATIC(=3)
可读写,当前数据记录可自由移动,可看到新增记录
B:
ADLOCKREADONLY(=1)
缺省锁定类型,记录集是只读的,不能修改记录
ADLOCKPESSIMISTIC(=2)
悲观锁定,当修改记录时,数据提供者将尝试锁定记录以确保成功地编辑记录。只要编辑一开始,则立即锁住记录。
ADLOCKOPTIMISTIC(=3)
乐观锁定 ,直到用Update方法提交更新记录时才锁定记录。
ADLOCKBATCHOPTIMISTIC(=4)
批量乐观锁定,允许修改多个记录,只有调用UpdateBatch方法后才锁定记录。
当不需要改动任何记录时,应该使用只读的记录集,这样提供者不用做任何检测。
对于一般的使用,乐观的锁定可能是最好的选择,因为记录只被锁定一小段时间,
数据在这段时间被更新。这减少了资源的使用。
C:(指定SQL语句类型)
ADCmdUnknown (= &H0008)
未知,需要系统来判断,速度慢,为缺省值
ADCmdText (= &H0001)
命令语句如SQL语句
如:Select * from Table1
ADCmdTable (= &H0002)
查询的表名称,例如:Table1
ADCmdStoredProc (= &H0004)
存储过程名称
ADCmdFile (= &H0100)
对象类型相应的文件名称
ADCmdTableDirect (= &H0200)
是能直接从表中获取行内容的表名称
conn.execute(sql)(0)为数据集的第一个字段的值