功能
1.获取执行SQL的对象
方法:createStatement() 用于创建向数据库发送SQL语句的一个对象。
修饰/返回值类型:Statement(声明)
方法:prepareStatement(String sql) 用于创建向数据库发送SQL语句的一个对象。
修饰/返回值类型:PreparedStatement (准备好的 声明)
2.管理事物
事物:一个或一组SQL语句组成一个执行单元,要么全部执行,要么全不执行
开启事物
方法:setAutoCommit(boolean autoCommit) 调用该方法设置参数为false即开启事物(autoCommit自动提交)false错true对
修饰/返回值类型:void (空的)
提交事物
方法:commit()
修饰/返回值类型:
回滚事物
方法:rollback()
修饰/返回值类型:
package cn.itcast.jdbc;
import cn.itcast.util.JDBCUtils; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; /** * 事物操作 转账方法 */ public class JdbcDemo12 { public static void main(String[] args) { Connection conn = null; PreparedStatement pstmt1 = null; PreparedStatement pstmt2 = null; try { //1.获取去数据库连接 conn = JDBCUtils.getConnection(); //开启事物 conn.setAutoCommit(false); //2.定义SQL //2.1A的lowest_sal-500 String sql1 = " update job_grades set lowest_sal = lowest_sal-? where grade_level =?;"; //2.2B的lowest_sal+500 String sql2 = " update job_grades set lowest_sal = lowest_sal+? where grade_level =?;"; //3.获取执行SQL的对象 pstmt1 = conn.prepareStatement(sql1); pstmt2 = conn.prepareStatement(sql2); //4.设置参数 pstmt1.setDouble(1, 500); pstmt1.setString(2, "A"); pstmt2.setDouble(1, 500); pstmt2.setString(2, "B"); //5.执行SQL语句 pstmt1.executeUpdate(); //手动制造异常 int i = 3 / 0; pstmt2.executeUpdate(); //提交事物 conn.commit(); } catch (Exception e) {//只要出异常就回滚所以要用一个大的把异常都抓到 //出异常就会进入catch内,所以在这里进行回滚 try { if (conn != null) { conn.rollback(); } } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); } finally { JDBCUtils.close(pstmt1, conn); JDBCUtils.close(pstmt2, null); } } }