// Jdbc关闭数据库连接时,会隐含一个提交事务的操作

        private final static String DB_DRIVER = "oracle.jdbc.driver.OracleDriver";private final static String DB_CONNECTION = "jdbc:oracle:thin:@127.0.0.1:1521:mydb01";private final static String DB_NAME = "scott";private final static String DB_PWd = "scott";//jdbc关闭自动提交. 在对数据库的操作未提交时,当conn.close()时,会默认先提交事务,再关闭连接.public static void test1() {Connection conn = null;CallableStatement callStmt = null;PreparedStatement ps = null;try {Class.forName(DB_DRIVER);conn = DriverManager.getConnection(DB_CONNECTION, DB_NAME, DB_PWd);conn.setAutoCommit(false); //关闭自动提交ps = conn.prepareStatement("insert into t_user values (?, ?, ?)");ps.setString(1, "1");ps.setString(2, "1");ps.setString(3, "1");int results = ps.executeUpdate();//conn.commit();//不手动提交System.out.println("插入了" + results + "条: ");} catch (Exception e) {try {conn.rollback();} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}e.printStackTrace(System.out);} finally {try {conn.setAutoCommit(true);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}if (null != callStmt) {try {callStmt.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (null != conn) {try {conn.close();// jdbc关闭自动提交. 在jdbc未提交时,当conn.close()时,会默认先提交事务,再关闭连接.} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}//jdbc默认自动提交. 在对数据库的操作未手动提交时,也会立即提交到数据库并生效public static void test2() {Connection conn = null;CallableStatement callStmt = null;PreparedStatement ps = null;try {Class.forName(DB_DRIVER);conn = DriverManager.getConnection(DB_CONNECTION, DB_NAME, DB_PWd);// conn.setAutoCommit(false); //jdbc默认自动提交ps = conn.prepareStatement("insert into t_user values (?, ?, ?)");ps.setString(1, "1");ps.setString(2, "1");ps.setString(3, "1");int results = ps.executeUpdate();  //注意,这一步操作就被提交到数据库了!!!//conn.commit();//不手动提交System.out.println("插入了" + results + "条: ");} catch (Exception e) {try {conn.rollback();} catch (SQLException e1) {// TODO Auto-generated catch blocke1.printStackTrace();}e.printStackTrace(System.out);} finally {try {conn.setAutoCommit(true);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}if (null != callStmt) {try {callStmt.close();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (null != conn) {try {conn.close();//  jdbc关闭连接} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}

JDBC 关闭数据库连接与自动提交相关推荐

  1. java jdbc 回滚_java_详解Java的JDBC API中事务的提交和回滚,如果JDBC连接是在自动提交模式 - phpStudy...

    详解Java的JDBC API中事务的提交和回滚 如果JDBC连接是在自动提交模式下,它在默认情况下,那么每个SQL语句都是在其完成时提交到数据库. 这可能是对简单的应用程序,但有三个原因,你可能想关 ...

  2. MySQL中如何关闭事务的自动提交

    关闭MySQL的事务自动提交 在mysql中,默认情况下,事务是自动提交的,也就是说只要执行一条DML语句就开启了事务,并且提交了事务:(也称之为"一行一提交"): Start t ...

  3. mysql 设置事物自动提交_mysql事务自动提交的问题

    1:mysql的aut0commit配置默认是开启的,也就是没执行一条sql都会提交一次,就算显示的开启事务也会导致多条SQL不在一个事务中, 如果需要相关的SQL在同一个事务中执行,那么必须将aut ...

  4. java mysql 自动提交_Mybatis的JDBC提交设置/关闭mysql自动提交------关于mysql自动提交引发的惨剧...

    学习Mybatis时提到了JDBC方式需要自己手动提交事务,如果不加session.commit会导致数据库的数据无法正常插入(程序本身又不给你报错,还装出一副我已经插入成功的样子) SqlSessi ...

  5. mysql使用jdbc进行批量插入时把事务设为手动提交比事务自动提交速度快了10倍

    第一次写博客,写的不好请多多包涵.欢迎评论 今天需要对mysql做一个批量插入的操作,使用的是原生的jdbc对mysql进行操作,大约插入20几万条数据,刚开始事务是自动提交的,插完数据大约用了4分钟 ...

  6. jdbc的事务自动提交和手动提交,以及mybatis开启自动提交后是否会复用一个连接的验证

    jdbc的sql执行默认是自动提交事务 默认时自动提交,当我手动提交时会报错,不过数据还是会插入到数据库中,因为执行完executeupdate后数据库会自动commit 开启手动提交 手动提交则需要 ...

  7. 4、MySQL设置事务自动提交(开启和关闭)

    MySQL 默认开启事务自动提交模式,即除非显式的开启事务(BEGIN 或 START TRANSACTION),否则每条 SOL 语句都会被当做一个单独的事务自动执行.但有些情况下,我们需要关闭事务 ...

  8. KingbaseES V8R6 ksql 关闭自动提交

    背景 用过oracle或mysql的人都知道,做一个dml语句,如果发现做错了,还可以rollback,但在Kingbase ksql 中,如果执行一个dml,没有先运行begin; 的话,一执行完就 ...

  9. mysql不自动提交更改语句_MySQL设置事务自动提交(开启和关闭)

    MySQL 默认开启事务自动提交模式,即除非显式的开启事务(BEGIN 或 START TRANSACTION),否则每条 SOL 语句都会被当做一个单独的事务自动执行.但有些情况下,我们需要关闭事务 ...

最新文章

  1. 送你38个常用的Python库,数值计算、可视化、机器学习等8大领域都有了
  2. android 自动休眠时间设置在哪里,Android休眠设置时间
  3. Don‘t support broadcast for binaryOp,
  4. powerDesiger uml class
  5. 测试用例的书写方式及测试模板大全
  6. 前端怎么使用jsessionid_成都Web前端是干什么的?新手怎么入门
  7. 联想昭阳k29轴拆机步骤图_UG8.5编程加工之固定轴曲面轮廓铣削加工方法
  8. C/C++函数指针与指针函数
  9. 没有bug队——加贝——Python 练习实例 25,26
  10. 查看tar文件的顶层目录
  11. 4种最常问的编码算法面试问题
  12. Button控件的点击事件
  13. CCNA CCNP全套教材 CCNA CCNP视频 CCNA CCNP最新题库解析
  14. hibernate_使用c3p0连接池配置
  15. Java调用Bing翻译
  16. Python中的协议有什么作用?
  17. Unity组件:Lens Flare 镜头光晕
  18. 什么是FIDO、什么是FIPS浅理解
  19. 佑道医生集团获风和资本数千万A轮投资,6个月实现盈亏平衡
  20. android模拟器游戏大全,安卓模拟器游戏大全_小鸡模拟器

热门文章

  1. 独孤九剑第三式-决策树和随机森林
  2. shaderGraph练习(三)------ 渐变效果
  3. makefile自动变量与隐晦规则推导
  4. 【虚拟机NAT模式及桥接模式配置】
  5. 【转载】tIOU意义及其优势
  6. python多环境管理(venv与virtualenv)
  7. 自贸经济中架起的“隐形桥梁”:国货精品与中国AI力量
  8. Spring A.S 1.0版本迭代日志
  9. 水星路由器DNS服务器未响应,水星(MERCURY)MW300C路由器怎么恢复出厂设置?
  10. 长虹电视android优化要多久,长虹电视时间久了卡顿如何解决?最新优化教程详解...