我要做一个程序,遇到与卖火车票同样情况的问题.就是如何锁住数据库表,不让其他人同时操作;而当我的操作完成后,其他人方可以继续执行.
解决方案 »
- chrome要怎么用getelementById自动填表单?我IE装了chrome frame以后就不能自动填表单了.
- 在VB中 mod的运算。
- VB自动更新字段!!
- socket受到的字节。怎么处理?
- 想实现自动上传文件到另一台服务器,用什么方法?ftp可以么?求助,高手请给个思路或者例子
- 文件轉換。
- 请教ADODC的问题?在线等待!!!!!!!!!!
- 一个打印问题?
- 如何用vb实现本地硬盘copy限速?有api?还是现成控件?就像是servU那样的限速,可以控制每秒限多少K
- 关于vb picturebox的loadpicture与paintpicture的区别
- 关于pdf文档编程问题,哪里有pdf的sdk下载.
- 送分啊,会者不难啦,两个关于VB和OS的问题
我想起来以前用过的FOXPRO可以锁定1条记录,应该考虑这方面。
Rst1.Open "select * from tUsers " ,Cnn1, adOpenKeyset, adLockReadOnly
这样别人只能读。不能写数据库了
锁住后,自己都不能编辑了.
而用悲观锁,只能所当前编辑的记录,而别人还是能够增加记录的,到时候,记录总和或返回的id都不能保证.
经过2天的思考与测试,终于找到方法了,并测试通过.今将代码发布給正在关注的大家,还请指教一二:
'锁定帐务表,然后添录帐务记录,完成对帐务记录添加后,获得当前最大ID号
'myData.connData 是用Data Environment方式建立的连接方式,大家也可以用
'Rs.Open的方式执行 myData.ConnData.BeginTrans '开始事务处理
myData.ConnData.Execute "Select * From 帐务表 With(TABLOCKX)" '注意这是锁定帐务表,别人此时不能读和写,只能是等待状态
myData.ConnData.Execute "Insert into 帐务表 (ID," & s_帐务项目 & ",发生时间,摘要,属性) Values " & _
"(" & i_ID & "," & Text5(1).Text & ",'" & DTPicker2.Value & "','收支帐_" & Combo1.Text & "," & ReplaceSQL(Combo5.Text) & "','" & s_帐务项目 & "')"
If Rs.State <> adStateClosed Then Rs.Close
Rs.Open "Select Max(ID) From 帐务表", Conn, adOpenForwardOnly, adLockReadOnly
i_帐务ID = Rs(0) '获的无干扰的ID值
myData.ConnData.CommitTrans '注明事务完成,此时系统自动将锁定表解锁'此程序用在SQLServer2000上通过,对于Access就没试过,Access单机版本估计也无需用到的啦.