您现在的位置是:主页 > news > 职业培训学校/系统优化是什么意思

职业培训学校/系统优化是什么意思

admin2025/5/29 5:24:02news

简介职业培训学校,系统优化是什么意思,seo试用软件,响应式网站怎么写1. 事务介绍 事务:一组逻辑操作单元(一个或多个DML操作),使数据从一种状态变换到另一种状态事务处理的原则:保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当…

职业培训学校,系统优化是什么意思,seo试用软件,响应式网站怎么写1. 事务介绍 事务:一组逻辑操作单元(一个或多个DML操作),使数据从一种状态变换到另一种状态事务处理的原则:保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当…

1. 事务介绍

  • 事务:一组逻辑操作单元(一个或多个DML操作),使数据从一种状态变换到另一种状态
  • 事务处理的原则:保证所有事务都作为一个工作单元来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交(commit),那么这些修改就永久地保存下来;要么数据库管理系统将放弃所作的所有修改,整个事务回滚(rollback)到最初状态。
  • 数据一旦提交就不可回滚。
  • 哪些操作会导致数据的自动提交
    • DDL操作
    • 默认情况下的DML操作,但是这种状态可以修改
    • 关闭连接时

2. JDBC事务处理

以转账为例

public class Demo {@Testpublic void test() throws Exception {Connection connection = null;try {//获取连接connection = JDBCUtils.getConnection();//阻止自动提交connection.setAutoCommit(false);//执行操作String delsql = "UPDATE `user_table` SET `balance` = `balance`-100 WHERE `user` = ?";String addsql = "UPDATE `user_table` SET `balance` = `balance`+100 WHERE `user` = ?";int aa = update(connection, delsql, "AA");System.out.println(10 / 0);int bb = update(connection, addsql, "BB");//提交事务connection.commit();System.out.println("转账成功!");} catch (Exception e) {e.printStackTrace();try {connection.rollback();System.out.println("转账失败:回滚");} catch (SQLException ex) {ex.printStackTrace();}} finally {//关闭资源,针对数据库连接池时使用,需要还原连接的状态if (connection != null){connection.setAutoCommit(true);}JDBCUtils.closeResource(connection, null);}}//增删改操作public int update(Connection connection, String sql, Object... args) {PreparedStatement statement = null;try {//1.预编译SQL语句,返回PreparedStatement对象statement = connection.prepareStatement(sql);//2.填充占位符for (int i = 0; i < args.length; i++) {statement.setObject(i + 1, args[i]);}//3.执行操作return statement.executeUpdate();} catch (Exception e) {e.printStackTrace();} finally {//4.关闭资源JDBCUtils.closeResource(null, statement);}return -1;}
}

3. 事务的ACID属性

部分内容:MySQL笔记 17:TCL(事务控制语言)

获取和修改事务隔离级别的方法

//获取当前连接的隔离级别
int isolation = connection.getTransactionIsolation();
//设置数据库的隔离级别
connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);