`
yangzg216
  • 浏览: 70842 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

JDBC对事务的使用(包括自动提交,回滚等知识)

    博客分类:
  • java
阅读更多
   首先得清楚什么时候使用事务。
   当你需要一次执行多条SQL语句时,可以使用事务。通俗一点说,就是,如果这几条SQL语句全部执行成功,则才对数据库进行一次更新,如果有一条SQL语句执行失败,则这几条SQL语句全部不进行执行,这个时候需要用到事务。
   其次才是事务的具体使用。
   1.获取对数据库的连接(代码这里省略了吧,网上太多了,对各种数据库的连接的都有)
   2.设置事务不自动提交(默认情况是自动提交的)
     conn.setAutoCommit(false);   其中conn是第一步获取的随数据库的连接对象。
   3.把想要一次性提交的几个sql语句用事务进行提交
     Statement stmt = null;
     stmt = conn.createStatement();
     stmt.executeUpdate(sql1);
     stmt.executeUpdate(Sql2);
     .
     .
     .
     conn.commit();   //使用commit提交事务
  4.捕获异常,进行数据的回滚(回滚一般写在catch块中)
    catch(Exception e)
    {
        ...
        try
        {
           conn.rollback();
        } catch(Exception e)
        {...}
     }
5.把事务再改成自动提交(默认状态)
   conn.setAutoCommit(true);
  解答各种疑问
  1.回滚的目的是什么呢?
  目的是使得sql1,sql2。。。等操作要么全部执行成功,要么全部执行不成功,这也是为什     么把这几个sql语句当成一个事务来处理的目的。
  2.回滚从哪里开始回滚,我如何控制回滚的起始点。
  其实是可以设置存储点的 Savepoint piont = conn.setSavepoint();
                         conn.rollback(point);
  如果你没有设置存储点,他会回滚到你设置禁止事务自动提交的时候,因为你是先设置禁止自动提交的,再进行executeUpdate(sql)的,所以他会回滚到你的所有执行的这几个sql语句前的状态。
分享到:
评论
2 楼 阴霾中的阳光 2015-04-03  
请问 如果是自动提交的话,每执行一句sql 数据就直接存储到数据库吗
1 楼 yangzg216 2011-10-06  
这是我花费了一个多小时,才总结出来的。。。希望能对自己以后的开发有点帮助,也希望能对广大读者有点帮助哈。。。有哪些错误尽管指出来啊,我会虚心接受的。。。

相关推荐

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...

    MYSQL中文手册

    言 1. 一般信息 1.1. 关于本手册 1.2. 本手册采用的惯例 1.3. MySQL AB概述 1.4. MySQL数据库管理系统概述 ...13.4. MySQL事务处理和锁定语句 13.4.1. START TRANSACTION, COMMIT和ROLLBACK语法...

    mysql官方中文参考手册

    13.4.3. 会造成隐式提交的语句 13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET TRANSACTION语法 13.4.7. XA事务 13.5. 数据库管理语句 13.5.1. 账户管理语句 ...

    MySQL 5.1参考手册中文版

    13.4. MySQL事务处理和锁定语句 13.4.1. START TRANSACTION, COMMIT和ROLLBACK语法 13.4.2. 不能回滚的语句 13.4.3. 会造成隐式提交的语句 13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES...

    MySQL 5.1参考手册

    13.4.3. 会造成隐式提交的语句 13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET TRANSACTION语法 13.4.7. XA事务 13.5. 数据库管理语句 13.5.1. 账户管理语句 ...

    MySQL 5.1参考手册 (中文版)

    13.4.3. 会造成隐式提交的语句 13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET TRANSACTION语法 13.4.7. XA事务 13.5. 数据库管理语句 13.5.1. 账户管理语句 ...

    MySQL5.1参考手册官方简体中文版

    13.4.3. 会造成隐式提交的语句 13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET TRANSACTION语法 13.4.7. XA事务 13.5. 数据库管理语句 13.5.1. 账户管理语句 ...

    MySQL 5.1官方简体中文参考手册

    2.3.14. 在Windows环境下对MySQL安装的故障诊断与排除 2.3.15. 在Windows下升级MySQL 2.3.16. Windows版MySQL同Unix版MySQL对比 2.4. 在Linux下安装MySQL 2.5.在Mac OS X中安装MySQL 2.6. 在NetWare中安装MySQL ...

    mysql5.1中文手册

    MySQL对标准SQL的扩展 1.8.5. MySQL与标准SQL的差别 1.8.6. MySQL处理约束的方式 2. 安装MySQL 2.1. 一般安装问题 2.1.1. MySQL支持的操作系统 2.1.2. 选择要安装的MySQL分发版 2.1.3. 怎样...

    MySQL 5.1中文手冊

    13.4.3. 会造成隐式提交的语句 13.4.4. SAVEPOINT和ROLLBACK TO SAVEPOINT语法 13.4.5. LOCK TABLES和UNLOCK TABLES语法 13.4.6. SET TRANSACTION语法 13.4.7. XA事务 13.5. 数据库管理语句 13.5.1. 账户管理语句 ...

Global site tag (gtag.js) - Google Analytics