JDBC 关闭数据库连接与自动提交【转】
// 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 block
e1.printStackTrace();
}
e.printStackTrace(System.out);
} finally {
try {
conn.setAutoCommit(true);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (null != callStmt) {
try {
callStmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (null != conn) {
try {
conn.close();// jdbc关闭自动提交. 在jdbc未提交时,当conn.close()时,会默认先提交事务,再关闭连接.
} catch (SQLException e) {
// TODO Auto-generated catch block
e.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 block
e1.printStackTrace();
}
e.printStackTrace(System.out);
} finally {
try {
conn.setAutoCommit(true);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
if (null != callStmt) {
try {
callStmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if (null != conn) {
try {
conn.close();// jdbc关闭连接
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
完全引用自
JDBC 关闭数据库连接与自动提交--https://blog.csdn.net/hjiacheng/article/details/53193361
JDBC 关闭数据库连接与自动提交【转】的更多相关文章
- 20181218 - PostgreSQL Auto Commit Guide(自动提交)
20181218 - PostgreSQL Auto Commit Guide 参考官网简介,https://www.postgresql.org/docs/10/ecpg-sql-set-autoc ...
- 阶段3 1.Mybatis_07.Mybatis的连接池及事务_6 mybatis中的事务原理和自动提交设置
在实际的开发中,建议使用连接池的形式. JNDI的资料 H:\BaiDu\黑马传智JavaEE57期 2019最新基础+就业+在职加薪\讲义+笔记+资料\主流框架\31.会员版(2.0)-就业课(2. ...
- Mybatis的JDBC提交设置/关闭mysql自动提交------关于mysql自动提交引发的惨剧
学习Mybatis时提到了JDBC方式需要自己手动提交事务,如果不加session.commit会导致数据库的数据无法正常插入(程序本身又不给你报错,还装出一副我已经插入成功的样子) SqlSessi ...
- 简单实现JDBC自动加载驱动,简化数据连接和关闭数据库连接
package util; import java.io.File;import java.io.FileInputStream;import java.io.IOException;import j ...
- JDBC自动提交和批处理操作
今天用JDBC与数据库进行交互的时候,报错如下: *************************************************************************** ...
- postgresql 关闭自动提交
1. 简介说明 我们知道oracle中sqlplus里面执行dml语句:是需要提交commit:若错了:也可以回滚rollback: 然而在postgresql里面默认是自动提 ...
- MysqL自动提交机制的关闭
MysqL在执行一句数据库操作命令的时候,通常都是自动提交的.常用引擎下有两种,分别是MyIsam和InnoDB,MyIsam是不支持事务处理的,但InnoDB支持,但InnoDB在不开启事务处理的情 ...
- KingbaseES V8R6 ksql 关闭自动提交
背景 用过oracle或mysql的人都知道,做一个dml语句,如果发现做错了,还可以rollback,但在Kingbase ksql 中,如果执行一个dml,没有先运行begin; 的话,一执行完就 ...
- 关闭SSMS的事务自动提交,改为手动提交
SQLServer 2005-2008-2012使用Oracle时,默认是手动提交.而SQLServer2005中,默认是自动提交,但是SQLServer支持配置. 方法: 用SSMS连接到SQL S ...
随机推荐
- abstract关键字 super 关键字 类与继承
https://www.cnblogs.com/liubing2018/p/8421319.html https://www.cnblogs.com/dolphin0520/p/3803432.htm ...
- Offset Management For Apache Kafka With Apache Spark Streaming
An ingest pattern that we commonly see being adopted at Cloudera customers is Apache Spark Streaming ...
- kernel笔记——中断
cpu与磁盘.网卡.键盘等外围设备(相对于cpu和内存而言)交互时,cpu下发I/O请求到这些设备后,相对cpu的处理能力而言,磁盘.网卡等设备需要较长时间完成请求处理. 那么在请求发出到处理完成这段 ...
- 20145203盖泽双《网络对抗技术》拓展:注入:shellcode及return-into-libc攻击
20145203盖泽双<网络对抗技术>拓展:注入:shellcode及return-into-libc攻击 一.注入:shellcode 1.编写一段用于获取Shellcode的C语言代码 ...
- PHP处理XML文档,没有CDATA部分数据处理
在博客备份时,导出了所有文章,导出是xml文档,文章内容在CDATA部分. 这里介绍下XML中CDATA: 所有 XML 文档中的文本均会被解析器解析.只有 CDATA 区段(CDATA sectio ...
- 微信小程序:动画(Animation)
简单总结一下微信动画的实现及执行步骤. 一.实现方式 官方文档是这样说的:①创建一个动画实例 animation.②调用实例的方法来描述动画.③最后通过动画实例的 export 方法导出动画数据传递给 ...
- centos系统java后台运行(xshll关掉不至于jar程序结束)
这样执行,就可以后台运行java程序 nohup java -Dfile.encoding=UTF-8 -jar xxx.jar & 后台内容在该目录下nohup .out文件内,netst ...
- 接口请求,上传byte数组byte[]数据异常,负数变正数/负数变63
一.背景 最近项目中有个需求,就是需要把一个byte[]数组上传到服务端.但是我发现发送的byte数组和服务端接收的数组不一样,所有的正数在传递时正确,数组长度也没变化,但是负数变成了63或者负数全部 ...
- DAY16、模块和包
一.模块 1.模块的加载顺序:内存 =>内置 =>sys.path(一系列自定义模块) 2.sys.path:环境变量,存放文件路径的列表 重点:默认列表第一个元素就是当前被执行文件所在的 ...
- Java多线程10:join()方法
一.前言 通过一个简单的例子引入join()方法 public class Thread01 extends Thread{ @Override public void run() { for(int ...