事务
我们可以将一组数据建成一个事务。当所有语句都顺利执行后,事务可以被提交,否则,如果其中某个语句遇到错误,那么事务将被回滚。
默认情况下,数据库连接处于自动提交模式,每个SQL命令一旦被执行便提交给数据库。之后便无法回滚,在使用事务时,需要关闭这个默认值
1 | conn.setAutoCommit(false); |
然后任意多次的调用executeUpdate方法,在执行了所有命令之后调用commit方法
1 | conn.commit(); |
如果出现错误,可以回滚
1 | conn.rollback(); |
保存点
创建一个保存点意味着稍后只需要返回这个点而不是事务的开头。
1 | conn.setAutoCommit(false); |
批量更新
若有一个程序需要多次执行更新语句,可以使用批量更新的方法提高程序性能。在使用批量更新时,一个命令序列作为一批操作将同时被收集和提交。不过要使用DatabaseMetaData类中的,supportsBatchUpdates方法查看数据库是否支持这种特性(mysql是支持的)。
同一批操作可以包括insert、update、delete等操作,也可以是数据库定义命令,如create table和drop table。但是不能包含select操作,若有会抛异常
示例程序如下
1 | package transaction; |