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;

使用实例

  1. public static void main(String[] args) {
  2. Properties pros = new Properties();
  3. try {
  4. pros.load(TestConnection.class.getClassLoader().getResourceAsStream("jdbc.properties"));
  5. } catch (IOException e) {
  6. e.printStackTrace();
  7. }
  8. try {
  9. Class.forName(pros.getProperty("driverClass"));
  10. } catch (ClassNotFoundException e) {
  11. e.printStackTrace();
  12. }
  13. Connection conn = null;
  14. PreparedStatement pstmt = null;
  15. try {
  16. String url = pros.getProperty("url");
  17. String user = pros.getProperty("user");
  18. String password = pros.getProperty("password");
  19. conn = DriverManager.getConnection(url, user, password);
  20. boolean status = conn.getAutoCommit();
  21. System.out.println("AutoCommit = " + status);
  22. conn.setAutoCommit(false);
  23. pstmt = conn.prepareStatement("delete from student where id = 906");
  24. pstmt.executeUpdate();
  25. int e = 1 / 0;// 模拟出现异常
  26. pstmt = conn.prepareStatement("delete from student where id = 907");
  27. pstmt.executeUpdate();
  28. conn.commit();// 手动提交,不能省略
  29. } catch (Exception e) {
  30. e.printStackTrace();
  31. try {
  32. conn.rollback();// 手动回滚,可以省略,系统会自动回滚
  33. } catch (SQLException ex) {
  34. ex.printStackTrace();
  35. }
  36. } finally {
  37. try {
  38. pstmt.close();
  39. } catch (SQLException e) {
  40. e.printStackTrace();
  41. }
  42. try {
  43. conn.close();
  44. } catch (SQLException e) {
  45. e.printStackTrace();
  46. }
  47. }
  48. }

Java操作数据库——在JDBC里使用事务的更多相关文章

  1. Java操作数据库——使用JDBC连接数据库

    Java操作数据库——使用JDBC连接数据库 摘要:本文主要学习了如何使用JDBC连接数据库. 背景 数据持久化 数据持久化就是把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应 ...

  2. 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 ...

  3. JDBC 数据库连接 Java操作数据库 jdbc快速入门

    JDBC基本概念 Java DataBase Connectivity 数据库连接 java操作数据库 本质上(sun公司的程序员)定义的一套操作关系型数据库的规则 既接口  更新内容之前 代码 pa ...

  4. JDBC数据源(DataSource)数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用。

    JDBC数据源(DataSource)的简单实现   数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用. 2.数据源提供了一种简单获取数据库连接的方式,并能在内部通 ...

  5. JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了

    JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了 代码示例 转自 https://docs.oracle.com/javase/tutorial/jdbc/o ...

  6. Java操作数据库——手动实现数据库连接池

    Java操作数据库——手动实现数据库连接池 摘要:本文主要学习了如何手动实现一个数据库连接池,以及在这基础上的一些改进. 部分内容来自以下博客: https://blog.csdn.net/soonf ...

  7. Java操作数据库——使用连接池连接数据库

    Java操作数据库——使用连接池连接数据库 摘要:本文主要学习了如何使用JDBC连接池连接数据库. 传统方式和连接池方式 传统方式的步骤 使用传统方式在Java中使用JDBC连接数据库,完成一次数据库 ...

  8. java操作数据库:增删改查

    不多bb了直接上. 工具:myeclipse 2016,mysql 5.7 目的:java操作数据库增删改查商品信息 test数据库的goods表 gid主键,自增 1.实体类Goods:封装数据库数 ...

  9. JavaSE学习总结(九)—— Java访问数据库(JDBC)

    一.JDBC简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java ...

随机推荐

  1. ORA-07217 environment variable cannot be evaluated

    问题描述:还是rman的问题,一个很沙雕的问题,改了半天,准备是要做数据库的全备,和归档的备份 1.连接rman进行备份,这里要保持数据库为mount状态,因为要对数据库全备 [oracle@orcl ...

  2. DUBBO: xml文件无法解析

    xml是: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http:/ ...

  3. IT兄弟连 HTML5教程 CSS3属性特效 渐变2 线性渐变实例

    3 线性渐变实例 一.颜色从顶部向底部渐变 制作从顶部到底部直线渐变有三种方法,第一种是起点参数不设置,因为起点参数的默认值为“top”:第二种方法起点参数设置为“top”:第三种起点参数使用“-90 ...

  4. 激光炸弹 HYSBZ - 1218

    激光炸弹 HYSBZ - 1218 Time limit:10000 ms Memory limit:165888 kB OS:Linux Source:HNOI2003 一种新型的激光炸弹,可以摧毁 ...

  5. 三个月前的评测拖延三个月仍旧是拳王No.1吗?YES!

    距前作展开隐形的翅膀,WPR003N补完篇仿佛已经隔了几个光年,最近替换了2019发现android sdk需要手冻放入一个tools2文件夹来延续Eclipse style的m$ distribut ...

  6. Nacos Cluster Building

    原文链接:https://www.javaspring.net/nacos/nacos-cluster-building Continue to talk about the Nacos build ...

  7. cocos2d游戏jsc文件格式解密,SpideMonkey大冒险

    “ 介绍cocos2d游戏中常用的jsc格式文件的解密.” 01 — 在破解游戏应用中,经常会碰到后缀为jsc的文件,这是基于cocos2d开发的游戏的加密代码,本质上是js文件,只是被加密了. 例如 ...

  8. Abusing SUDO Advance for Linux Privilege Escalation

    Index What is SUDO? Scenario. Sudoer FIle Syntax. Exploiting SUDO zip tar strace tcpdump nmap scp ex ...

  9. git命令行的颜色配置

    Git颜色branch,diff,interactive,status配置,git终端配置颜色,git命令行高亮 Git默认的输出是单一颜色的,感觉很不容易阅读,Git支持用多种颜色来显示其输出的信息 ...

  10. ES6.x

    类 class Animal{ constructor(name){ this.name=name } Spack(){ console.log(name) } } class Dog extends ...