事务是相关操作构成一个完整操作单元,所有的语句都顺利执行后,事务可以提交。否则, 如果其中某个语句遇到错误,那么事务将被回滚,就好像没有执行过任何命令一样。
将多个命令组合成事务的主要原因是为了确保数据库的完整性。例如, 假设我们需要讲钱从一个帐号转账到另一个帐户。此时,一个非常重要的问题是我们必须同时将钱从一个帐号取出并且存入另一个帐号。如果在将钱存入其他帐号之前系统发生崩溃,那么我们必须撤销取款操作,取款存款必须是一个完成的操作单元,在同一个是事务里完成。
可见,事务要么成功的执行所有的操作并被提交,要么在中间某个失败的位置,执行回滚操作,数据库讲自动这小上次提交事务以来的所有更新操作,就像没有执行过任何命令。
默认情况下,数据库链接处于自动提交模式。每个sql命令一旦被执行便被提交给数据库。如果要检查当前自动提交模式的设置,请调用Connection类中的getAutoCommit方法。
设置自己的事务单元:
1、关闭自动提交模式:conn.setAutoCommit(false);---------事务的开始
2、使用通用的方法创建语句对象Statement
Statement stmt = conn.createStatement();
3、 任意多次调用executeUpdate方法;
4、 执行了所有命令之后,调用commit方法。--------------事务的结束
5、如果出现错误,请调用conn.rollback();
此时, 程序将自动这些上次提交以来的所有命令。当事务被SQLExceptiony
异常中断时,通常的方法是发起回滚操作。
将多个命令组合成事务的主要原因是为了确保数据库的完整性。例如, 假设我们需要讲钱从一个帐号转账到另一个帐户。此时,一个非常重要的问题是我们必须同时将钱从一个帐号取出并且存入另一个帐号。如果在将钱存入其他帐号之前系统发生崩溃,那么我们必须撤销取款操作,取款存款必须是一个完成的操作单元,在同一个是事务里完成。
可见,事务要么成功的执行所有的操作并被提交,要么在中间某个失败的位置,执行回滚操作,数据库讲自动这小上次提交事务以来的所有更新操作,就像没有执行过任何命令。
默认情况下,数据库链接处于自动提交模式。每个sql命令一旦被执行便被提交给数据库。如果要检查当前自动提交模式的设置,请调用Connection类中的getAutoCommit方法。
设置自己的事务单元:
1、关闭自动提交模式:conn.setAutoCommit(false);---------事务的开始
2、使用通用的方法创建语句对象Statement
Statement stmt = conn.createStatement();
3、 任意多次调用executeUpdate方法;
4、 执行了所有命令之后,调用commit方法。--------------事务的结束
5、如果出现错误,请调用conn.rollback();
此时, 程序将自动这些上次提交以来的所有命令。当事务被SQLExceptiony
异常中断时,通常的方法是发起回滚操作。