您的位置:首页 > 其它

JDBC技术---事务处理

2011-08-05 15:35 260 查看
事务处理是正对数据库操作时一个重要环节,它可以保证执行多条记录的一致性。这久可以实现数据库中表与表之间的关联,同时提高了对数据操作的准确性、安全性。

什么是事务处理?事物处理就是当执行多个SQL指令时,如果因为某个原因使其中一条指令执行有错误,则取消先前执行过的所有指令。它的主要作用是保证各项操作的一致性和完整性。事务处理不仅仅存在于计算机的世界中,在人类的现实生活中,也存在和事务处理一样的处理方式。比如说,买和卖,相信全世界的人都知道一手交钱一手交货的道理,如果在交易的过程,突然卖方不卖了(指令执行错误),那么交易也就被迫停止了(开始执行事物回滚操作),钱还是在买方手中,货同样还在卖方的手中(回滚后的状态)。所以当交易失败的时候,钱和货不可能同时出现在同一个人手中,在数据库中为了防止类似生活中的事件发生,所以产生了事务处理。

在JDBC的API中JDBC事务是用Connection对象控制的。该对象提供了两种事务模式:自动提交模式和手工提交模式。如果不指定模式的情况下,系统会默认为自动提交事务。也就是说,对数据库进行操作的每一条记录,都被看作是一项事务处理。操作成功后,系统会自动提交,否则取消事务。如果想对多个SQL进行统一的事务处理时,就必须取消自动提交模式,这就是可以使用Connection的setAutoCommit(false)方法取消自动提交事务,Connection类中还提供了如下其他控制事务的方法:

==》public boolean getAutoCommit( ):可以判断Connection对象的当前提交模式是否为自动提交模式,如果是则返回true,否则返回false。

==》public void commit( ):提交事务。

==》public void rollback( ):回滚事务。

注意:在Java中使用JDBC事务处理,一个JDBC事务不能跨越多个数据库而且需要判断当前使用的数据库是否支持事务。这是可以使用DatabaceMetaData中的supportsTransactions()方法可以判断数据库是否支持事务处理。它的返回值类型是boolean,返回true则表示事务受支持,否则返回false。如使用MySQL的事务功能,就要求MySQL的表类型为Innodb才支持类型。否则在java程序中做了commit或rollback,但在数据库中根本不能生效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: