我的数据库是MySQL5.0,ODBC用的是MySQLODBC 3.51。
可是在开发时发现一个问题,如果ADOQuery在取数据和Post之间正好有人修改
了服务器上的同一条数据,那么Post就会出现“无法为更新定位行,一些值可
能已在最后一次读取后被修改”,我查了一下,在SQLServer下,可以将ADOQuery
的CursorLocation设置成clUseServer,就可以解决这个问题,但MySQL设置时
报错“Database does not suport book"之类的错,反正就是不支持
clUseServer。请问如何解决这个问题
1、请不要告诉我,在Post之前Refresh,这样用户的输入不是丢失了吗
2、请不要告诉我,自己拼Update的SQL语句来更新数据库,这样太麻烦而且表很多
3、请不要告诉我,用事务捕捉Exception并回滚,因为用户没有输入错误,这些
数据是要报存的,我只用把最新的东西存进去就可以了我想问各位有什么解决方法,或者各位的MySQL是否支持clUseServer?
可是在开发时发现一个问题,如果ADOQuery在取数据和Post之间正好有人修改
了服务器上的同一条数据,那么Post就会出现“无法为更新定位行,一些值可
能已在最后一次读取后被修改”,我查了一下,在SQLServer下,可以将ADOQuery
的CursorLocation设置成clUseServer,就可以解决这个问题,但MySQL设置时
报错“Database does not suport book"之类的错,反正就是不支持
clUseServer。请问如何解决这个问题
1、请不要告诉我,在Post之前Refresh,这样用户的输入不是丢失了吗
2、请不要告诉我,自己拼Update的SQL语句来更新数据库,这样太麻烦而且表很多
3、请不要告诉我,用事务捕捉Exception并回滚,因为用户没有输入错误,这些
数据是要报存的,我只用把最新的东西存进去就可以了我想问各位有什么解决方法,或者各位的MySQL是否支持clUseServer?
解决方案 »
- Delphi,怎样自动生成按钮
- 请教各位高手一个超难问题,解决立即结贴!
- 为什么我写的客户端无法正常访问外网的SQL SERVER服务器?
- 怎么让ListView的滚动条定位到它选择的纪录
- 怎样实现分别位于不同位置的两个数据库的同步
- 问一个 难解的问题! 我远程拨号,找到异地的主机 更新数据库的纪录!在更新过程断线了怎么办的?
- sql导出TXT文件,字段无法对齐
- !!在Dephi中如何使用ADO进行多线程后到数据库连接?????
- 如何让dbgrid某一列显示效果如同dbgrid最左边有小箭头那一列的外观,即象button?
- 串口通信问题:怀疑MSCOMM的接收数据能力有问题!!!
- Delphi在简体环境下编写的程序怎样在繁体系统中安装使用?
- DELPHI6如何实现WinXP风格的MessageBox?
如果使用lock table 来锁定当前用户操作的表存在着表的死锁问题。
解决问题的唯一办法使用Update的SQL来更新用户数据。
如果是三层的话可以再数据层自定义更新方式,和上边的方法差不多,也是那么回事。
ado不支持开放式并发处理,所以你也就别想着使用post来解决你的并发更新问题。
如果使用lock table 来锁定当前用户操作的表存在着表的死锁问题。
解决问题的唯一办法使用Update的SQL来更新用户数据。
如果是三层的话可以再数据层自定义更新方式,和上边的方法差不多,也是那么回事。
=====================================================================
多谢你的回答,不过我想你误解我的意思了,我不是要解决并发更新问题,只要实现最后
一个人的修改正确的存在数据库里就可以了,之前的其它人的修改可以被覆盖。我试过,ADOQuery连SQLServer时,用clUseServer模式就可以实现我的效果,但MySQL不
知道为什么不能用clUseServer模式(但MySQL的官方网站又说是支持的)