12.16

 今天学了

简单事务处理
在数据库应用中,在完成某个功能的过程中可能会涉及多个操作,只有多个操作都完
成的时候,该功能才算完成。例如从一个账户向另外一个账户转账,需要从一个账户上扣
钱,向另外一个账户上加钱,涉及两个更新操作,分别更新两个账户的余额,只有两个更
新操作都完成的时候,转账功能才算完成。我们称这样的功能为事务。
非常明显,对于事务来说,必须保证该事务所涉及的所有操作要么都完成,要么一个
也不做,这个过程称为事务处理。
Java 中提供了专门进行事务处理的 API,它在不同的 Java 应用服务器中有不同的实现。
关于 Java 事务处理 API 的使用超出了本书的范围,所以这里只介绍如何使用 JDBC API 提
供的功能完成简单的事务处理。
使用 JDBC API 进行事务处理,主要是通过 Connection 接口完成。在前面介绍添加、更
新和删除功能的时候,我们只要执行完 SQL 语句,执行的结果就可以反映到数据库中。实
际上中间有一个提交的过程,默认情况下是自动提交。如果要进行事务处理,可以在事务
所涉及的所有操作(执行 SQL 语句)都完成的时候再提交,这样就不能使用自动提交功能了。
要禁止自动提交功能,可以使用下面的代码(con 是连接对象):
con.setAutoCommited(false);
设置完之后,所执行的 SQL 语句就不会直接反映到数据库中,只有提交之后才可以反
映到数据库中。要提交所执行的操作,可以使用下面的代码:
con.commit();
下面是使用连接对象完成事务处理的框架:

Connection con;
Statement stmt;
// 要执行的第一个 SQL 语句
String sql1 = ...
// 要执行的第二个 SQL 语句
String sql2 = ...
try
{  ...// 创建或者获取连接
 ...// 创建语句对象
 con.setAutoCommited(false);
 // 执行第一个 SQL 语句
 stmt.executeUpdate(sql1);
 // 执行第二个 SQL 语句
 stmt.executeUpdate(sql2);
 // 提交事务
 con.commit();
}catch(Exception e)
{
 // 产生异常时候的处理代码
}
finally
{
 // 关闭各种对象的代码
} 
原文地址:https://www.cnblogs.com/dty602511/p/14173793.html