Java操作数据库——在JDBC里使用事务
Java操作数据库——在JDBC里使用事务
摘要:本文主要学习了如何在JDBC里使用事务。
使用Connection的事务控制方法
当JDBC程序向数据库获得一个Connection对象时,默认情况下这个Connection对象会自动向数据库提交发送的SQL语句。若想关闭这种默认提交方式,让多条SQL在一个事务中执行,可使用JDBC提供的事务控制方法。
常用方法
查询自动提交的状态:boolean getAutoCommit() throws SQLException;
设置自动提交的状态:void setAutoCommit(boolean autoCommit) throws SQLException;
设置还原点:Savepoint setSavepoint() throws SQLException;
设置指定名称的还原点:Savepoint setSavepoint(String name) throws SQLException;
删除指定名称的还原点:void releaseSavepoint(Savepoint savepoint) throws SQLException;
提交:void commit() throws SQLException;
回滚:void rollback() throws SQLException;
回滚到指定名称的还原点:void rollback(Savepoint savepoint) throws SQLException;
查询隔离级别:int getTransactionIsolation() throws SQLException;
设置隔离级别:void setTransactionIsolation(int level) throws SQLException;
使用实例
- public static void main(String[] args) {
- Properties pros = new Properties();
- try {
- pros.load(TestConnection.class.getClassLoader().getResourceAsStream("jdbc.properties"));
- } catch (IOException e) {
- e.printStackTrace();
- }
- try {
- Class.forName(pros.getProperty("driverClass"));
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- Connection conn = null;
- PreparedStatement pstmt = null;
- try {
- String url = pros.getProperty("url");
- String user = pros.getProperty("user");
- String password = pros.getProperty("password");
- conn = DriverManager.getConnection(url, user, password);
- boolean status = conn.getAutoCommit();
- System.out.println("AutoCommit = " + status);
- conn.setAutoCommit(false);
- pstmt = conn.prepareStatement("delete from student where id = 906");
- pstmt.executeUpdate();
- int e = 1 / 0;// 模拟出现异常
- pstmt = conn.prepareStatement("delete from student where id = 907");
- pstmt.executeUpdate();
- conn.commit();// 手动提交,不能省略
- } catch (Exception e) {
- e.printStackTrace();
- try {
- conn.rollback();// 手动回滚,可以省略,系统会自动回滚
- } catch (SQLException ex) {
- ex.printStackTrace();
- }
- } finally {
- try {
- pstmt.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- try {
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
Java操作数据库——在JDBC里使用事务的更多相关文章
- Java操作数据库——使用JDBC连接数据库
Java操作数据库——使用JDBC连接数据库 摘要:本文主要学习了如何使用JDBC连接数据库. 背景 数据持久化 数据持久化就是把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应 ...
- Java操作数据库之JDBC增删改查
1.java连接MySql数据库 代码区域: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ...
- JDBC 数据库连接 Java操作数据库 jdbc快速入门
JDBC基本概念 Java DataBase Connectivity 数据库连接 java操作数据库 本质上(sun公司的程序员)定义的一套操作关系型数据库的规则 既接口 更新内容之前 代码 pa ...
- JDBC数据源(DataSource)数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用。
JDBC数据源(DataSource)的简单实现 数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用. 2.数据源提供了一种简单获取数据库连接的方式,并能在内部通 ...
- JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了
JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了 代码示例 转自 https://docs.oracle.com/javase/tutorial/jdbc/o ...
- Java操作数据库——手动实现数据库连接池
Java操作数据库——手动实现数据库连接池 摘要:本文主要学习了如何手动实现一个数据库连接池,以及在这基础上的一些改进. 部分内容来自以下博客: https://blog.csdn.net/soonf ...
- Java操作数据库——使用连接池连接数据库
Java操作数据库——使用连接池连接数据库 摘要:本文主要学习了如何使用JDBC连接池连接数据库. 传统方式和连接池方式 传统方式的步骤 使用传统方式在Java中使用JDBC连接数据库,完成一次数据库 ...
- java操作数据库:增删改查
不多bb了直接上. 工具:myeclipse 2016,mysql 5.7 目的:java操作数据库增删改查商品信息 test数据库的goods表 gid主键,自增 1.实体类Goods:封装数据库数 ...
- JavaSE学习总结(九)—— Java访问数据库(JDBC)
一.JDBC简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java ...
随机推荐
- ORA-07217 environment variable cannot be evaluated
问题描述:还是rman的问题,一个很沙雕的问题,改了半天,准备是要做数据库的全备,和归档的备份 1.连接rman进行备份,这里要保持数据库为mount状态,因为要对数据库全备 [oracle@orcl ...
- DUBBO: xml文件无法解析
xml是: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http:/ ...
- IT兄弟连 HTML5教程 CSS3属性特效 渐变2 线性渐变实例
3 线性渐变实例 一.颜色从顶部向底部渐变 制作从顶部到底部直线渐变有三种方法,第一种是起点参数不设置,因为起点参数的默认值为“top”:第二种方法起点参数设置为“top”:第三种起点参数使用“-90 ...
- 激光炸弹 HYSBZ - 1218
激光炸弹 HYSBZ - 1218 Time limit:10000 ms Memory limit:165888 kB OS:Linux Source:HNOI2003 一种新型的激光炸弹,可以摧毁 ...
- 三个月前的评测拖延三个月仍旧是拳王No.1吗?YES!
距前作展开隐形的翅膀,WPR003N补完篇仿佛已经隔了几个光年,最近替换了2019发现android sdk需要手冻放入一个tools2文件夹来延续Eclipse style的m$ distribut ...
- Nacos Cluster Building
原文链接:https://www.javaspring.net/nacos/nacos-cluster-building Continue to talk about the Nacos build ...
- cocos2d游戏jsc文件格式解密,SpideMonkey大冒险
“ 介绍cocos2d游戏中常用的jsc格式文件的解密.” 01 — 在破解游戏应用中,经常会碰到后缀为jsc的文件,这是基于cocos2d开发的游戏的加密代码,本质上是js文件,只是被加密了. 例如 ...
- Abusing SUDO Advance for Linux Privilege Escalation
Index What is SUDO? Scenario. Sudoer FIle Syntax. Exploiting SUDO zip tar strace tcpdump nmap scp ex ...
- git命令行的颜色配置
Git颜色branch,diff,interactive,status配置,git终端配置颜色,git命令行高亮 Git默认的输出是单一颜色的,感觉很不容易阅读,Git支持用多种颜色来显示其输出的信息 ...
- ES6.x
类 class Animal{ constructor(name){ this.name=name } Spack(){ console.log(name) } } class Dog extends ...