概述
事务 指的是逻辑上的一组操作,组成这组操作各个逻辑单元要么全都成功,要么全都失败。 通过模拟转账实现 数据库准备
create database account;
use account;
create table money(
id int primary key auto_increment,
name varchar(10),
money double
);
insert into money values (null,'aaa',10000);
insert into money values (null,'bbb',10000);
insert into money values (null,'ccc',10000);
Java代码实现
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.junit.Test;
/*
* 添加事务管理:模拟转账
*/
public class JDBC_transaction {
@Test
/**
* 完成转账的案例
*/
public void demo1(){
Connection conn = null;
PreparedStatement pstmt = null;
try{
/**
* 完成转账代码:
* 1.扣除某个账号的钱
* 2.给另外一个账号加钱
*/
// 获得连接:
conn = JDBCUtil.getConnection();
// 开启事务
conn.setAutoCommit(false);
// 编写SQL语句:
String sql = "update money set money = money + ? where name = ?";
// 预编译SQL:
pstmt = conn.prepareStatement(sql);
// 设置参数:
// 用aaa账号给bbb账号转1000元
pstmt.setDouble(1, -1000);
pstmt.setString(2, "aaa");
// 执行SQL:扣除aaa账号1000元
pstmt.executeUpdate();
//可以加入一个异常用于测试
//int i = 1 / 0;
// 给bbb账号加1000
pstmt.setDouble(1, 1000);
pstmt.setString(2, "bbb");
pstmt.executeUpdate();
// 提交事务:
conn.commit();
}catch(Exception e){
// 回滚事务:
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
}finally{
JDBCUtil.release(pstmt, conn);
}
}
}
最后
以上就是鲜艳热狗为你收集整理的java jdbc实现事务_JDBC之事务(代码实现)的全部内容,希望文章能够帮你解决java jdbc实现事务_JDBC之事务(代码实现)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复