请教一个数据库加锁的问题:con.commit()前是否会对要操作的表加锁?

nt941 2003-10-29 05:38:24
比如:

……
con.setAutoCommit(false);

String sql = "update VTABLE ……";
pstmt = this.con.prepareStatement(sql);
pstmt.execute();
pstmt.close();

con.commit();
……

请问在最后一句代码执行前,如果同时有人对表VTABLE进行操作,那么他能成功吗?如果不能,该如何对表VTABLE加锁(在某个时刻我只想允许一个人对该表进行操作)?

请高手赐教。
谢谢!
...全文
180 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nt941 2003-10-30
  • 打赏
  • 举报
回复
严重感谢!请各位高手接分。
nbm0 2003-10-30
  • 打赏
  • 举报
回复
综合楼上两个,就可以了!

conn.setAutoCommit(false);
stmt = conn.prepareStatment(sql);
stmt.setXXX();
.....
result = stmt.exceUpdate();
if(result == 0)
{try{
conn.rollback();
conn.setAutoCommit(true);}
catch(Exception e){}
}
junyi2003 2003-10-30
  • 打赏
  • 举报
回复
同上。
如果不成功的话,一定要rollback。不然这个表有可能被锁死。
ChDw 2003-10-30
  • 打赏
  • 举报
回复
你启动事务了,然后调用update语句,这个时候这个表(或者这个表中的部分记录)已经被锁定不能够被其它用户修改,如果另外一个人试图update,他会处于等待指定你commit为止
nt941 2003-10-30
  • 打赏
  • 举报
回复
提,请高手赐教!

62,615

社区成员

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

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