jdbc的事务开启

在这篇文章的基础上进行修改,标红的部分表示添加的代码,同时附有注解解释。

http://www.cnblogs.com/xyyz/p/7119076.html

  1 package com.xyyz.jdbc;
  2
  3 import java.sql.Connection;
  4 import java.sql.DriverManager;
  5 import java.sql.PreparedStatement;
  6 import java.sql.ResultSet;
  7
  8 import com.xyyz.utils.JDBCUtils;
  9
 10 public class JDBCDemo {
 11
 12     public static void main(String[] args) throws Exception {
 13         query();
 14         insert();
 15         query();
 16         update();
 17         query();
 18         delete();
 19         query();
 20     }
 21
 22     /**
 23      * 查询代码
 24      *
 25      * @throws Exception
 26      */
 27     public static void query() throws Exception {
 28         Connection connection = JDBCUtils.getConnection();
 29         // 获取数据库连接
 30         String sql = "select * from jdbctestdata";
 31         // 获取预编译对象
 32         PreparedStatement prepareStatement = connection.prepareStatement(sql);
 33         // 执行sql语句
 34         ResultSet resultSet = prepareStatement.executeQuery();
 35         // 遍历打印sql语句
 36         while (resultSet.next()) {
 37             System.out.println(resultSet.getInt(1) + "--" + resultSet.getString(2));
 38         }
 39         // 关闭释放资源
 40         JDBCUtils.closeAll(resultSet, prepareStatement, connection);
 41     }
 42
 43     /**
 44      * 插入数据
 45      */
 46     public static void insert() throws Exception {
 47         // 获取数据库连接
 48         Connection connection = JDBCUtils.getConnection();
 49         // 这里开启了事务,最后提交了,成功的插入了一条数据。
 50         connection.setAutoCommit(false);
 51         String sql = "insert into jdbctestdata value(?,?,?)";
 52         // 获取预编译对象
 53         PreparedStatement prepare = connection.prepareStatement(sql);
 54         prepare.setString(1, "6");
 55         prepare.setString(2, "小白");
 56         prepare.setString(3, "30");
 57         int i = prepare.executeUpdate();
 58         connection.commit();
 59         System.out.println("i=" + i);
 60         // 关闭释放资源
 61         JDBCUtils.closeAll(null, prepare, connection);
 62     }
 63
 64     /**
 65      * 更新数据
 66      */
 67     public static void update() throws Exception {
 68
 69         // 获取数据库连接
 70         Connection connection = JDBCUtils.getConnection();
 71         // 这里开启了事务,但是没有提交,所以最后的执行的修改没有用。
 72         connection.setAutoCommit(false);
 73         String sql = "update jdbctestdata set name=? , age=? where id=?";
 74         // 获取预编译对象
 75         PreparedStatement prepare = connection.prepareStatement(sql);
 76         prepare.setString(1, "小红");
 77         prepare.setString(2, "20");
 78         prepare.setString(3, "6");
 79         int i = prepare.executeUpdate();
 80         System.out.println("i=" + i);
 81         // 执行sql语句
 82         JDBCUtils.closeAll(null, prepare, connection);
 83     }
 84
 85     /**
 86      * 删除数据
 87      */
 88     public static void delete() throws Exception {
 89         // 获取数据库连接
 90         Connection connection = JDBCUtils.getConnection();
 91         String sql = "delete from jdbctestdata where id = ?";
 92         // 获取预编译对象
 93         PreparedStatement prepare = connection.prepareStatement(sql);
 94         prepare.setString(1, "6");
 95         int i = prepare.executeUpdate();
 96         System.out.println("i=" + i);
 97         // 执行sql语句
 98         JDBCUtils.closeAll(null, prepare, connection);
 99     }
100
101 }
时间: 2024-10-07 11:36:42

jdbc的事务开启的相关文章

Java中JDBC的事务问题

事务 l  事务的四大特性:ACID: l  mysql中操作事务 l  jdbc中操作事务 事务概述 为了方便演示事务,我们需要创建一个account表: CREATE TABLE account(          id INT PRIMARY KEY AUTO_INCREMENT,          NAME VARCHAR(30),          balance NUMERIC(10.2) );   INSERT INTO account(NAME,balance) VALUES('

[疯狂Java]JDBC:事务管理、中间点、批量更新

1. 数据库事务的概念: 1) 事务的目的就是为了保证数据库中数据的完整性: 2) 设想一个银行转账的过程,如果分两步,第一步是A的账户-1000,第二步是B的账户+1000,这两个动作必须是连贯的,如果中间断开(出现故障等)比如第一步执行完之后发生异常而终止了操作,那么A就白扣了1000,而B的账户也没有钱增加,这就发生了非常严重的错误: !!以上这个案例可以看出: a. 这两步必须是连贯的,一起合成的,应该作为一个整体逻辑执行单元来执行: b. 如果两步顺利执行完毕那么数据就是完整的,如果中

【JDBC】事务的使用

转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5868750.html 关于事务的理论知识.ACID特性等等,网上太多了,在此不一一重复.本文主要着重  事务  这个工具在实际编程中是怎么实现的. 在MySQL命令行的默认设置下,事务都是自动提交的,即执行SQL语句后就会马上执行COMMIT操作,每一个SQL语句都被认为是一个完整的事务处理. 而我们想要实现事务,即:执行多句SQL语句,再最终一起提交或在出错时撤销(SQL语句要么提交,要么撤销.提交则对数

hibernate 在做更新和删除的时候一定要把事务开启

在做更新和删除的时候一定要把事务开启 在做更新和删除的时候一定要把事务开启 在做更新和删除的时候一定要把事务开启 重要的事情说三遍!!! curd之前配置文件 <property name="hbm2ddl.auto">update</property> 练习hibernate的CURD(单表操作 save& update& delete& get/load )时,发现update&  delete方法执行不成功,冥思苦想也没想出

JDBC高级-事务

(一)什么是事务 事务:是数据库的概念,逻辑上的一组操作,组成这级操作的各个单元,要么全部成功,要么全部失败. 主要是针对批量的insert.update.delete语句 (二)事务的作用 保证多条SQL的数据变更,要么全部成功,要么全部失败. 在实际业务场景里,通常会遇到一些特殊的业务:这些业务需要由多条SQL操作来一起完成.如果没有事务,那么每执行一条SQL,数据变更会立即生效:但是如果在执行过程中,某一条SQL执行失败或者出现了异常,前边的SQL变更已经生效,但是后边的SQL就不执行了,

Spring总结——AOP、JDBC和事务的总结

1.上一次总结了 Spring 的核心三大组件(Core,Beans,Context),今天总结的 AOP.JDBC和事务都可以看成是核心三大组件的应用. 其中 Spring 的事务管理又以 AOP 为基础的声明式事务管理,对 JDBC 数据操作进行了补充. 2.在学习 AOP 的时候,需要搞明白的几个问题. (1)AOP 是以动态代理为基础的,所以在学习 AOP 之前,首先对动态代理有深刻的理解. (2)AOP 和切面是什么关系. (3)AOP 中概念比较多,明白每个名词的含义:切面.增强.代

事务的隔离级别 另一种事务开启方式

事务是有隔离级别 read uncommited (读未提交):不做任何隔离,具有脏读,不可重读对,幻读的问题 read committed (读提交):可以防止脏读,不能防止不可重复读和幻读的问题 repeated read(可重复读):可以防止脏读,不可重复读,不能放在幻读(mysql的默认隔离级别) serializable(串行化):数据库运行为串行,以上问题都可以防止,但是性能低 下面的解释都用这个user表 脏读(a,b同时开始事务,a,b再事务,没有哪一个结束,只有两个都进入事务后

JDBC 入门 - 事务

Transaction(事务) 事务简介 事务的作用是保护数据完整性.它将一系列操作作为一个原子操作来处理, 从而防止多个操作中有的操作失败有的操作成功, 造成数据不完整. 在 JDBC 中, 一个连接默认的提交方式是 Auto-Commit 模式, 在这种模式下, 每个单独的SQL语句都会被视为一个事务, 当SQL执行时(更确切的说是完成时,详见 这里), 就会被提交到数据库. 然而, 在要求多个 SQL 同时成功或者失败的数据完整性问题时, 这种模式不能满足需要. 禁用 Auto-Commi

JDBC值事务

事务的四大特性: 原子性, 一致性(比如说A给B转账,A转了之后B的账户增加了,两个都完成才叫一致性),隔离性(A给B转账,A给C转账,AB和AC并发是无关的),永久性(转账之后 不可能复原,就是说不做别的操作是不会还原的) JDBC中的事务是默认开启的,所以手动的开启事务必须要先关闭默认的事务, conn.setAutoCommit(false) 建立 public String transaction(AccountInfo from, AccountInfo to, int account