java中mysql的JDBC的事务管理
2017-06-23 21:10
381 查看
什么时候开启事务、提交事务、回滚事务?
事务的开启
事务的提交
事务的回滚
自己写的事务的代码
package homework01;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import org.junit.Test;
import myUtils.JDBCUtil;
public class Test01 {
/*
* 总结整个数据库连接对象,无论是driud还是c3p0都要返回给数据库连接操作来将数据连接
* 操作数据基本的用PreparedStatement对象来操作,
* 如果用DBUtils就是将QueryRunner创建对象,如果是增删改就用update,如果是查就用query
*/
@Test
public void Demo01() throws SQLException{
Connection conn = JDBCUtil.getConnection();
//将事务开启,注意这里false才是开启事务,true是自动提交事务
conn.setAutoCommit(false);
String sql="UPDATE accoumt SET money=money+1000 WHERE NAME='小张'";
PreparedStatement ps = conn.prepareStatement(sql);
String sql1="UPDATE accoumt SET money=money-1000 WHERE NAME='小凤' ";
PreparedStatement ps1 = conn.prepareStatement(sql1);
ps.executeUpdate();
ps1.executeUpdate();
//自己设置将事务在这里提交
conn.commit();
//将事务回滚,回到操作之前
conn.rollback();
}
}
实现aaa向bbb转账1000块的案例代码:掌握开启事务、提交事务、回滚事务的地方
在转账中没有添加事务的管理,出现aaa账号的钱被转丢了,但是bbb账号的钱没有任何变化。需要给转账的功能添加事务的管理。
在转账中添加事务管理
@Test /** * 完成转账的案例 */ public void demo1(){ Connection conn = null; PreparedStatement pstmt = null; try{ /** * 完成转账代码: * * 扣除某个账号的钱 * * 给另外一个账号加钱 */ // 获得连接: conn = JDBCUtils.getConnection(); // 开启事务 conn.setAutoCommit(false); // 编写SQL语句: String sql = "update account 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{ JDBCUtils.release(pstmt, conn); }
相关文章推荐
- Java事务管理之JDBC
- 深入分析JavaWeb Item31 -- JDBC(MySQL)事务管理
- Java Web 文章管理系统(Jsp+Ajax+JDBC+MySql实现)
- Java Web 文章管理系统(Jsp+Ajax+JDBC+MySql实现)
- [java源码] Java Web 文章管理系统(Jsp+Ajax+JDBC+MySql实现)
- 【食堂管理项目记录】java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
- Java JDBC学习实战(三): 事务管理
- JAVAWEB开发之事务详解(mysql与JDBC下使用方法、事务的特性、锁机制)和连接池的详细使用(dbcp以c3p0)
- Java Web 文章管理系统(Jsp+Ajax+JDBC+MySql实现)
- Java JDBC学习实战(三): 事务管理
- 深入分析JavaWeb 31 -- JDBC(MySQL)事务管理
- [疯狂Java]JDBC:事务管理、中间点、批量更新
- [疯狂Java]JDBC:事务管理、中间点、批量更新
- Java事务管理之JDBC
- JAVA JDBC(存储过程和事务管理)
- 在Eclipse中测试MySQL-JDBC(11)关于mysql事务管理,JDBC事务管理,回滚点
- 深入分析JavaWeb Item31 -- JDBC(MySQL)事务管理
- [java源码] Java Web 文章管理系统(Jsp+Ajax+JDBC+MySql实现)
- java中jdbc事务管理
- java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/