送分100分:查询一个表时,同时要更新这个表,有什么注意事项吗?
sql ="select * from xiaoshou "Rst1.Open sql, Conn, adOpenKeyset, adLockPessimistic
sql ="update xiaoshou set 总金额=1000 where 姓名='张三' "
Conn.Execute sql
在以上代码中Rst1.Open sql, Conn, adOpenKeyset, adLockPessimistic
这adOpenKeyset, adLockPessimistic两项 怎么设置才不会影响Conn.Execute sql的正常执行。
其实open方法后面有多个参数
CursorType LockType CommandType
比如 rs.open sql,1,1 也可以写成 rs.cursorType = 1 rs.LockType = 1 rs.open sql 其中CursorType代表从一个表或者一个SQL查询结果返回的记录。
这个参数有四个值分别是: adOpenForwardOnly 表示只允许在记录集内的记录间往前移动。这个是缺省值。 adOpenKeyset 反映由其它用户所做的对记录的改变或者删除动作,但并不反映由其它用户做作的添加新记录的动作。 adOpenDynamic 反映由其它用户所做的对记录的改变或者删除动作,包括添加的新记录 adOpenStatic 不反映其它用户对记录所做的修改,添加,删除动作。 这四个值VBSCRIPT预定义位 adOpenForwardOnly = 0 adOpenKeyset = 1 adOpenDynamic = 2 adOpenStatic = 3 lockType 表示当打开记录集时,数据提供者用于锁定数据库的类型: adLockReadOnly 数据不能改变,这是缺省值! adLockPessimistic 数据提供者在开始编辑数据的时候锁定记录 adLockOptimistic 仅当调用update方法时,数据提供者锁定记录 adLockBatchOptimistic 用于批处理修改 他们的常量值定义分别是: adLockReadOnly = 1 adLockPessimistic = 2 adLockOptimistic = 3 adLockBatchOptimistic = 4 rs.open sql,conn,1,1 读取记录 select rs.open sql,conn,1,3 只更新记录最好 update rs.open sql,conn,2,3 插入和删除最好 insert delete 仅你这4行代码,怎么设参数都不影响。
除非你所用的数据库特殊到通过游标的锁定可以阻止自己的更新。 没有影响
Conn.Execute sql 和
Rs.Open sql, Conn, adOpenKeyset, adLockPessimistic
基本等效 怎么设置会有影响,有什么影响? 这样执行更改,那个设置才有影响
Sql = "select * from xiaoshou "
rst1.Open Sql, Conn, adOpenKeyset, adLockOptimistic
rst1.Filter = " 姓名='张三'"
rst1.总金额 = 1000
rst1.Update
rst1.Close
你那种写法是分两步分别执行了,没什么影响 俺喜欢
SLECT 用
Adodc1.RecordSource = "select * FROM TB "
Adodc1.Refresh
If Adodc1.Recordset.RecordCount > 0 Then
END IF 形式
upadate/insert 就用
sql ="update xiaoshou set 总金额=1000 where 姓名='张三' "
Conn.Execute sql
这样就不需要考虑那几个参数
这个adLockPessimistic 锁定对 同时更改这个表的 Conn.Execute sql 就真没有影响吗,各位。
补充:VB , 网络编程