事务:指逻辑上的一组操作,这组操作要么全部成功,要么全部失败
在命令行的话 语法
start transaction;
sql语句;
commit;
而在jdbc中,要用
connection.setAutoCommit(false) 相当于start transaction
sql语句;
connection.commit() 相当于commit
事务的隔离级别
脏读、不可重复读、虚读(泛读)
设置事务隔离级别 set transaction isolation level 隔离级别
查询事务隔离级别 select @@tx_isolation
serializable 可避免脏读、不可重复读、虚读
repeatable read 可以避免脏读、不可重复读
read committed 可避免脏读
read uncommitted 全部都无法避免
代码
package com.cn.demo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.cn.utils.JdbcUtils_dpcp;
//事务
public class Demo1 {
public static void main(String[] args) throws Exception {
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
conn = JdbcUtils_dpcp.getConnection();
conn.setAutoCommit(false);
String sql1 = "update account set money=money-100 where name='aaa'";
String sql2 = "update account set money=money+100 where name='bbb'";
st = conn.prepareStatement(sql1);
st.executeUpdate();
st = conn.prepareStatement(sql2);
st.executeUpdate();
conn.commit();
} finally {
JdbcUtils_dpcp.release(conn, rs, st);
}
}
}