连接事务管理
数据库事务(transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行, 要么全部不执行,是一个不可分割的工作单位。事务由事务开始到事务结束之间执行的全部数据库操作组成。
自动提交模式,即当一条SQL语句执行完成后,数据库系统将自动提交该语句所在事务。在虚谷JDBC驱动中控制事务自动提交模式有两种方式:
- 通过数据库连接URL串的auto_commit属性,控制事务的开启与关闭,默认情况下auto_commit属性为on,即自动提交模式。
- 通过Connection类的setAutoCommit(boolean commit)方法控制事务的开启与关闭,默认情况下commit属性为TRUE,即自动提交模式。
在禁用自动提交模式下,使用Connection类的commit()方法提交SQL语句对数据库做的更改,而Connection类的rollback()方法将回滚SQL语句对数据库的更改,上述两种方法执行完成后均将释放事务持有的全部锁资源。
注意:
事务仅对数据库DML操作有效。
以下为使用 setAutoCommit() 方法控制事务提交的示例代码:
//设置事务为非自动提交模式
conn.setAutoCommit(false);
//创建数据库Statement对象
Statement stm = conn.createStatement();
//数据库事务执行SQL语句
String sql = "insert into test (comp_id,comp_name) values(1,'comp')";
//执行静态SQL语句
stm.execute(sql);
//数据库预处理SQL语句
PreparedStatement pstm = conn. prepareStatement(“update test set id=? where comp_name=?”)
//预处理SQL语句第一个参数赋值
pstm.setInt(1,15);
//预处理SQL语句第二个参数赋值
pstm.setString(2,'DBMS');
//执行预处理SQL语句
pstm.execute();
//提交事务
conn.commit();
//删除表中指定行数据
stm.execute(“delete from test where id=15”);
//事务回滚方法
conn.rollback();
上述代码中执行提交事务操作,执行静态SQL语句与执行预处理SQL语句对数据库的更改将永久生效;而后执行的删除表中指定行数据操作,因其后调用的rollback() 方法,delete命令对数据库的数据更改将被回滚掉,故而对数据库的删除操作不会生效。