package com.bjpowernode.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
/**
* @Author:杨青
* @Time:2021/10/26 18:59
* @Description:
* JDBC事务机制:
* 1.jdbc中的事务是自动提交的:只要执行一条DML语句,则自动提交一次,这是jdbc默认的事务行为
* 但是在实际业务中,通常都是N条DML语句共同联合才能完成的,必须保证这些DML语句在同一事务中同时成功或同时失败
* 2.以下程序先验证一下JDBC的事务是否是自动提交机制
* 测试结果:
* JDBC中只要执行任意一条DML语句,就提交一次
*
*/
public class JDBCTest10 {
public static void main(String[] args) {
Connection conn=null;
PreparedStatement ps=null;
try {
//1.类加载完成注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接
conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","123456");
//3.获取预编译数据库操作对象
String sql="update t_user set loginName=?,realName=? where id=?";
ps=conn.prepareStatement(sql);
ps.setString(1,"java");
ps.setString(2,"Java");
ps.setInt(3,3);
//4.执行sql语句
int count=ps.executeUpdate(); //执行第一条update语句
System.out.println("count:"+count);
//重新赋值
ps.setString(1,"python");
ps.setString(2,"Python");
ps.setInt(3,3);
count=ps.executeUpdate(); //执行第二条update语句
System.out.println("count:"+count);
} catch (Exception e) {
e.printStackTrace();
} finally {
//6.释放资源
if(ps!=null){
try {
ps.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(conn!=null){
try {
conn.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
}