标签:创建 cat trace public 一个 port 调用 sql语句 提交
方法:createStatement() 用于创建向数据库发送SQL语句的一个对象。
修饰/返回值类型:Statement(声明)
方法:prepareStatement(String sql) 用于创建向数据库发送SQL语句的一个对象。
修饰/返回值类型:PreparedStatement (准备好的 声明)
事物:一个或一组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);
}
}
}
标签:创建 cat trace public 一个 port 调用 sql语句 提交
原文地址:https://www.cnblogs.com/rijiyuelei/p/12376663.html