JDBC 事物的处理:
概念: 事务是指逻辑上的一组操作, 组成这组操作的各个单元, 要不全部成功, 要不全部不成功.
数据库开启事务命令:
start transaction 开启事务
Rollback 回滚事务
Commit 提交事务
事物的使用:
JDBC 控制事务语句
- Connection.setAutoCommit(false); // 相当于 MySQL 语句的 start transaction
- Connection.rollback(); // 相当于 MySQL 语句的 rollback
- Connection.commit(); // 相当于 MySQL 语句的 commit
- -----------------------------------------------------------------------------------
代码如下:
- package com.aaa.demo1;
- import com.aaa.demo.JdbcUtils;
- import java.sql.Connection;
- import java.sql.PreparedStatement;
- import java.sql.SQLException;
- public class DemoTranscation {
- public static void main(String[] args) {
- Connection conn = null;
- PreparedStatement ps = null;
- // 1 获取链接
- try {
- conn = JdbcUtils.getConnectio();
- //2 开启事物
- conn.setAutoCommit(false);
- // 3 获取 PreparedStatement
- ps = conn.prepareStatement("UPDATE count SET money = money-? WHERE cname =?");
- // 4 使用 PreparedStatement 两次更新操作
- ps.setDouble(1, 500);
- ps.setString(2, "樱花落");
- ps.executeUpdate();
- System.out.println(111 / 0);
- ps = conn.prepareStatement("UPDATE count SET money = money+? WHERE cname =?");
- ps.setDouble(1, 500);
- ps.setString(2, "洛天依");
- ps.executeUpdate();
- // 提交事物
- // System.out.println("转账成功");
- //conn.commit();
- } catch (Exception e) {
- // 事物回滚
- try {
- conn.rollback();
- } catch (SQLException e1) {
- e1.printStackTrace();
- }
- System.out.println("转账失败");
- } finally {
- // 关资源
- JdbcUtils.close( conn,ps);
- }
- }
- }
来源: http://www.bubuko.com/infodetail-3009271.html