第一次写博客,还请大家多多支持
今天同事问了个问题:在多个select的时候,用不用放入同一个事务?
首先先看个例子:
public class JDBCClient {
public static void main(String[] args) {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/test","root","123456");
if(conn != null) {
//将本次会话的事务隔离级别设置为TRANSACTION_READ_COMMITTED,mysql默认的是REPEATABLE_READ
conn.setTransactionIsolation(2);
//关闭事务的自动提交
conn.setAutoCommit(false);
PreparedStatement ps = conn.prepareStatement("select student_no from student where student_id = 1 ");
ResultSet rs = ps.executeQuery();
while(rs.next()) {
System.out.println(rs.getString(1));
}
//设置断点,并将数据库中执行 update student set student_no = '新的值' where student_id = 1;然后继续执行
System.out.println("-----------");
rs = ps.executeQuery();
while(rs.next()) {
//这里打印出新赋值的值
System.out.println(rs.getString(1));
}
//提交事务
//conn.commit();
}
} catch (Exception e) {
e.printStackTrace();
if(conn != null) {
try {
conn.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}
}
}
//注:如果应用mysql默认的事务隔离级别,则两次打印出的内容一致;
}