哦,这个是数据库的并发控制问题,我提个解决办法:
在程序里设一个信号灯变量(没听说过?)比如Accessible,当然这个变量必须是布尔型全局变量,初值设为true。(顺便说一下这个变量不能设在客户程序里,只能设在服务程序里哦,不然就不是真正的全局变量)
在对表的每个访问操作(读或写或更新等)都执行
repeat
if Accessible=true then //叛定当前表是否可访问(没有其他用户访问)
begin
Accessible:=false;//锁定表,禁止其他用户在访问期间对表进行操作
具体的访问操作;
Accessible:=true;//操作完成,表解锁
exit;//这个是程序的唯一出口 :(
end
else showmessage('对不起其他用户正在使用表请稍后...');//只有继续等待
until;
说实话上面的虽然可以解决问题(这肯定是最笨的办法),但好的解决办法还请找找这方面的书(数据库的并发控制问题),不是一个难题,因为现在的程序都是C/S结构,这样的问题很晋遍,肯定有好的办法来解决,恕我能力有限。 :(
在程序里设一个信号灯变量(没听说过?)比如Accessible,当然这个变量必须是布尔型全局变量,初值设为true。(顺便说一下这个变量不能设在客户程序里,只能设在服务程序里哦,不然就不是真正的全局变量)
在对表的每个访问操作(读或写或更新等)都执行
repeat
if Accessible=true then //叛定当前表是否可访问(没有其他用户访问)
begin
Accessible:=false;//锁定表,禁止其他用户在访问期间对表进行操作
具体的访问操作;
Accessible:=true;//操作完成,表解锁
exit;//这个是程序的唯一出口 :(
end
else showmessage('对不起其他用户正在使用表请稍后...');//只有继续等待
until;
说实话上面的虽然可以解决问题(这肯定是最笨的办法),但好的解决办法还请找找这方面的书(数据库的并发控制问题),不是一个难题,因为现在的程序都是C/S结构,这样的问题很晋遍,肯定有好的办法来解决,恕我能力有限。 :(
解决方案 »
- 江湖告急,在线等,满意就结贴。
- 请问为什么delphi7龙卷风企业版安装后 新建中没有 ActiveX等很多项目呢?
- 去北大青鸟学.net对学delphi有没有帮助啊?
- 怎样在程序运行过程中设置临时环境变量?
- 100象素单位打印到纸上后,其长度应是多少厘米、毫米?(思考题)
- 高分请教:informix客户端连接问题
- 请问:ListView和TreeView问题?
- 如何实现这样的数据库查询和输入法
- 这样的错误有人遇到过吗?
- 我的机器提示系统"vserver.vxd"丢失,我该如何从"WIN98盘"恢复该文件??
- 关于ADOTable和DBGrid组件的问题?
- 如何判断DBGRID中各字段的类型?
freshboy0913(红绿灯)所说的对我来说比较易理解一些,我先试试
迟些再结贴,好吧