JAVA JDBC事务提交的疑问

http://zhidao.baidu.com/question/143168603.html


百度首页 |   百度知道 |   登录
百度知道 >  电脑/网络 >  程序设计 >  JAVA相关

JAVA JDBC事务提交的疑问。

浏览次数:1372次 悬赏分:0  |  解决时间:2010-4-4 00:16  |  提问者:laowai250
一个简单的事务提交案例
try{
   ... conn,ps,rs等对象省略
   conn.setAutoCommit();
   ... 执行一次查询
   rs = ps.execuQuery();
   if(rs.next){
      ...执行更新
      conn.commit();
   }
}
catch(SQLException e){
   conn.rollback();
}

当上面程序开始执行时,启动事务 conn.setAutoCommit();
如果我查询的时候 没有查询到结果  就是执行不到commit()方法
这个时候数据库会锁定吗,或者 因为没有执行commit提交方法,
自动默认是回滚事务?
最佳答案
>>启动事务 conn.setAutoCommit();
这个不是启动事务,而是设置事务是否自动提交,默认是自动提交,如果要手动控的话,写成conn.setAutoCommit(false);

if(rs.next){
    >>>  ...执行更新
      conn.commit();
   }

这个也不对,RS不可能执更新操作。只能是查询。

如果你进行了锁表操作,那么如果没有commit()或rollbak()方法,是不会进行解锁操作的。
下面给你些代码段以做参考。

public class SQLCondition{
 public ResultSet execuQuery(Connection conn) throws SQLException{
  检索操作.......
}
 public int execuUpdate(Connection conn) throws SQLException{
  更新操作.......
}
}

public class DBAccess(){
  public void execute(){
     SQLCondition condition = .....;
     Connection conn = .....;
     try{
      conn.setAutoCommit(false); //设成非自动提交
      condition.execuQuery(conn);
      condition.execuUpdate(conn);
   //如果操作成功会走到这一步,进行提交,可以解锁
      conn.commit();
     }catch(SQLException){
   //出现任何的SQL异常都可以捕捉到,进行事务回滚,也可以解锁。
      conn.rollbak();
     }
  }
}

>>自动默认是回滚事务? 
默认的话,是执行一条就进行提交,如果错了会回滚。
2
回答时间:2010-3-22 11:43  |  我来评论
向TA求助

回答者: dingjunfen | 八级采纳率:30%

擅长领域: JAVA相关 电脑/网络 电子数码 体育/运动 烦恼

参加的活动: 暂时没有参加的活动

相关内容
  • 2010-3-31java jdbc 怎样查看最终提交的sql语句
  • 2009-7-20关于jdbc中数据库事务的提交和回滚 1
  • 2011-5-23事务的提交和回滚是什么意思 Java 6
  • 2010-10-29JSP+java模式的WEB应用,如果浏览器提交更新请求后,突然关闭,后台事务...
  • 2011-7-8JAVA JDBC利用 DB LINK实现数据备份清楚功能
更多关于 jdbc 提交的问题>>
查看同主题问题:  java jdbc  事务  提交  疑问
等待您来回答
  • 0回答近期长春民生银行招聘,有谁接到通知了?结果如何?是不是成功与否都...
  • 0回答10java正则表达式"/\*!(.*)|!\*/"啥意思
  • 0回答js里的三元表达式问题 ?前面可以是数这类形吗 看下面的这断代码
  • 0回答永辉Vss系统
  • 0回答汽车销售 哪一种好做一点
  • 0回答20我是java程序员,怎么去学android应用程序开发,详细详细。cell
  • 1回答20逻辑表达式证明德摩根定律,并列出真值表
  • 1回答50求解vss2005安装时遇到的问题
更多等待您来回答的问题>>
其他回答  共1条
事务提交应该只是涉及到内容修改才会有。而且不同的数据库事务处理默认机制不一样。mysql默认是自动提交的,而oracle却需要人工提交后才生效。而且你设置自动提交错了。 
回答者:  thinkpack  |  九级  |  2010-3-22 11:36
推广链接 长春北大青鸟 java高级编程 
长春北大青鸟java高级编程,依托北大雄厚教育资源,开设软件工程师课程涵盖软件编程涵..  www.jl-accp.com
java编程培训班哪家好?吉林巨和18686686748 
java编程培训班--吉林巨和学习六个月=到北京工作+月薪三千起+三险一金,java编程培训..  www.juheit.com
java游戏开发 尚观全国9大实训基地,年薪8w起 
java游戏开发 国内唯一涵盖java开发应用层,中间件,内核,驱动层全覆盖人手一机写代码..  www.UpLooKing.com
长春北大青鸟java高级编程
长春北大青鸟java高级编程,依托北大雄厚教育资源,开设软件工程师课程涵盖软件编程涵..
www.jl-accp.com

java编程培训班哪家好?吉林..
java编程培训班--吉林巨和学习六个月=到北京工作+月薪三千起+三险一金,java编程培训..
www.juheit.com

java游戏开发 尚观全国9大实..
java游戏开发 国内唯一涵盖java开发应用层,中间件,内核,驱动层全覆盖人手一机写代码..
www.UpLooKing.com

JAVA软件哪里好?推荐清华大..
JAVA软件,清华大学本校培训,近百个实训项目,清华主讲教授课,毕业颁发《清华大学专业..
training.tsinghua.edu.cn/01062783406

男人阳痿,早泄,肾虚 用种玛!
用纯正美国进口 美国种玛 彻底解决男人阳痿,早泄,短小,射精无力等,床上难言之隐!
www.MeiGuoZhongMa.com.5m5x.com





来百度推广 JAVA相关
JAVA JDBC事务提交的疑问_第1张图片

你可能感兴趣的:(java,编程,数据库,正则表达式,jdbc,百度)