关于操作数据库同步的问题?

yunjava 2004-10-22 02:16:05
有2表A,B
每次向表A写1条信息, 先把B中的mubid列的值取出加1后再在更新到B表中,再把这个加1后的mubid数值和这条信息加入到A表中。

在用servlet写方法的时候 先在表B中取出mubid值再加1 然后在用这个值更新表B的numbid列(每次写入表A时更新表B所以表B只有1行数据,这条记录随着表A插入数据而更新 )并把值插入到表A的number列中

我想问这个B/S的结构的东东 如果有2个客户同时对数据库进行操作 当第一个客户刚取出B中的mubid值(比如这个时候mubid值是66)时候,还没有进行加1的计算的时候,第2个客户也开始取出mubid值,他取的也是66 然后第2个客户进行加1的操作这时mubid值等于77。 然后第一个客户也执行加1的计算,那第1个客户的mubid值也是77 了,在A表中是不如允许有2个相同的mubid 请问我应该怎么办 是不是要写个同步语句块或着有什么其他的办法?
...全文
106 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaomineer 2004-10-25
  • 打赏
  • 举报
回复
to:yunjava(呵呼) ,我说的方法与tigeryu(吴越小虎)不是一样的,应该是与 vcao(胶泥) 的方法类似。我用过的是,在创建完链接之后,对数据库进行操作之前调用dbc.setAutoCommit(false);dbc表示一个连结,在做完所有数据库操作之后,用dbc.commit();
Tabalulu 2004-10-22
  • 打赏
  • 举报
回复
用事务处理,或者用数据库的procedure
jnu_wen 2004-10-22
  • 打赏
  • 举报
回复
应该不算是数据库同步的问题,应该是多线程访问资源同步的问题吧。
jnu_wen 2004-10-22
  • 打赏
  • 举报
回复
把方法声明成synchronized,这样多个线程在同一时刻只能有一个线程访问此方法,这样数据就会同步了。
yunjava 2004-10-22
  • 打赏
  • 举报
回复
xiaomineer(我要好好学习天天向上) 说的“放在一个事务里面处理”与 tigeryu(吴越小虎)说的“
假设你这个操作的方法名叫作 add,请这样定义你的方法public static synchronized add()
” 是一样的方法吗? 我选哪个好 哪个简单些?
xiaomineer 2004-10-22
  • 打赏
  • 举报
回复
放在一个事务里面处理。只有一个人进行完了全部过程的数据库操作,其他人才能操作数据库
vcao 2004-10-22
  • 打赏
  • 举报
回复
创建一个autoCommitOff的连接,当对数据库所有的操作都完成后再调用Connection.Commit().
morrigan 2004-10-22
  • 打赏
  • 举报
回复
能说说原因吗?为什么这么写?关注ing
wuyue-tiger 2004-10-22
  • 打赏
  • 举报
回复
假设你这个操作的方法名叫作 add,请这样定义你的方法public static synchronized add()
yunjava 2004-10-22
  • 打赏
  • 举报
回复
那位朋友解答一下 小弟比较着急,

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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