vb会异步执行ADO recordset.Update 吗?

hai198good 2008-03-29 08:17:08
系统 vb6.0+WinXP+ACCESS数据库ADO连接
这样的代码:
......
recordset1.Open "select 数量 from " & xm & " where ID=" inid ,cnn, adOpenKeyset, adLockPessimistic
lnx1 = recordset1.Fields("数量").Value
recordset1.Fields("数量").Value = lnx2 '某变量值
recordset1.Update
'下面用另外一个recordset打开上面保存的那条记录
recordset2.Open "select 数量 from " & xm & " where ID=" inid ,cnn, adOpenKeyset, adLockPessimistic
lnx3 = recordset1.Fields("数量").Value
现在担心,ACCESS数据库记录多,几千万条记录,或文件有上百MB以上,速度慢。
vb会不会异步执行ADO recordset.Update 没有完成保存改变底层表数据就执行后面的代码?
可能使得lnx3=lnx1 而不是lnx3=lnx2,

注明:我现在只想讨论这样的情况,其实要确保lnx3=lnx2可以绕过上面的方法得到,
但上面的方法有时在另类的情况下会有用的

...全文
199 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hai198good 2008-03-30
  • 打赏
  • 举报
回复
谢谢 网友“fionfrankie”的热心回答,“几千万记录级”是出于预防、多考虑可能出现的,
实际应用可能不会达到。采用ACCESS数据库是考虑到是小单位的简单数据库在单机上应用。
采用SQL SERVER的话还要安装SQL SERVER数据库,老电脑运行速度更慢。
所以我想听听在数据库方面有特长的其他专家的见解。
fionfrankie 2008-03-30
  • 打赏
  • 举报
回复
这个几千万记录级数,最好用SQL SERVER,因为ACCESS的数据索引策略/预处理/查询执行计划没有SQL SERVER快!
异步这个你大可放心,VB是单线程产品,一定是一步步执行的!要么你设置事务,确保保存完毕,事务成功才转入下一执行代码行.
hai198good 2008-03-29
  • 打赏
  • 举报
回复
对不起有一条代码打错了
应该是
recordset1.Open "select 数量 from " & xm & " where ID=" inid ,cnn, adOpenKeyset, adLockPessimistic
lnx1 = recordset1.Fields("数量").Value
recordset1.Fields("数量").Value = lnx2 '某变量值
recordset1.Update
'下面用另外一个recordset打开上面保存的那条记录
recordset2.Open "select 数量 from " & xm & " where ID=" inid ,cnn, adOpenKeyset, adLockPessimistic
lnx3 = recordset2.Fields("数量").Value (就是这条错,应该是第二个recordset的值)

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧