/*
JDBC事务机制
1.JDBC中的事务是自动提交的
自动提交——只要执行任意一条DML语句,则自动提交一次。这是JDBC默认的事务行动
在实际的业务当中,通常都是N条DML语句共同联合才能完成的,必须保证他们这些DML语句在同一个事务中同时成功会同时失败
2.设置为自动提交的重点三行代码
conn.setAutoCommit(false);
conn.commit();
conn.rollback();
*/
public class JDBCTest02{
public static void main(String[] args){
Connection conn = null;
PreparedStatement ps = null;//使用PreparedStatement(预编译的数据库操作对象)
ResultSet rs = null;
try{
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver"); //2.获取连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","root");
//3.获取与编译的数据库操作对象
String sql = "update dept set dnmae = ? where deptno= ?";
ps = conn.prepareStatement(sql);
ps.setString(1,"X部");
ps.setInt(2,60);
int count = ps.executeUpdate();
System.out.println(count);
//重新给占位符赋值
ps.setString(1,"y部");
ps.setInt(2,50);
count = ps.executeUpdate();
System.out.println(count);
/*新增
String sql = "insert into dept(deptno,dname,loc) values(?,?,?)";
ps = conn.prepareStatement(sql);
ps.setInt(1,60);
ps.setString(2,"销售部");
ps.setString(3,"上海");
//4.执行SQL
int count = ps.executeUpdate();
System.out.println(count);
*/
}catch(Exception e){
e.printStackTrace();
}finally{
//6.释放资源
if(ps!=null){
try{
ps.close();
}
catch(Exception e){
e.printStackTrace();
}
}
if(conn!=null){
try{
conn.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
}
}
/*
设置为自动提交的重点三行代码
conn.setAutoCommit(false);
conn.commit();
conn.rollback();
*/
public class JDBCTest02{
public static void main(String[] args){
Connection conn = null;
PreparedStatement ps = null;//使用PreparedStatement(预编译的数据库操作对象)
ResultSet rs = null;
try{
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver"); //2.获取连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","root");
//将自动提交机制修改为手动提交
conn.setAutoCommit(false);//开启事务
//3.获取与编译的数据库操作对象
String sql = "update dept set dnmae = ? where deptno= ?";
ps = conn.prepareStatement(sql);
ps.setString(1,"X部");
ps.setInt(2,60);
int count = ps.executeUpdate();
System.out.println(count);
//重新给占位符赋值
ps.setString(1,"y部");
ps.setInt(2,50);
count = ps.executeUpdate();
System.out.println(count);
//手动提交
conn.commit();//try的最后提交事务
}catch(Exception e){
try {
//回滚事务
conn.rollback();
} catch (SQLException e1) {
e.printStackTrace();
}
throw new RuntimeException(e);
}finally{
//6.释放资源
if(ps!=null){
try{
ps.close();
}
catch(Exception e){
e.printStackTrace();
}
}
if(conn!=null){
try{
conn.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
}
}