一次执行多条SQL的技术要点如下:
-
DatabaseMetaData接口是描述有关数据库的整体综合信息,由于DatabaseMetaData是接口,所以没有构造方法,故不能使用new来创建DatabaseMetaData对象,但是可以通过Connection的getMetaData()方法创建。例如:DatabaseMetaData md=con.getMetaData()。
-
DatabaseMetaData类的supportsBatchUpdates方法用于判断此数据库是否支持批量更新。其返回值类型为boolean,如果此数据库支持批量更新,则返回true;否则返回false。
-
Statement的addBatch(String sql)方法将给定的SQL命令添加到此Statement对象的当前命令列表中,此方法可多次调用。
-
Statement的executeBatch()方法的作用是将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。
1.java处理事务的程序
在与数据库操作时,如果执行多条更新的SQL语句(如:update或insert语句),在执行第一条后如果出现异常或电脑断电, 则后面的SQL语句执行不了,这时候设定我们自己提交SQL语句,不让JDBC自动提交,格式为:
conn.setAutoCommit(false);
stmt.addBatch("insert into people values(078,'ding','duo')");
stmt.addBatch("insert into people values(30,'nokia','ddd')");
stmt.executeBatch();
执行多条SQL语句;
conn.commit(); //事务提交
//恢复自动提交模式
conn.setAutoCommit(true);
....
if (con != null) {
con.rollback();
con.setAutoCommit(true);
} //如果发现异常,则采取回滚
如果多条语句重复,只是参数不变的话可以这样
特殊情况:如果是只是参数不变,如下也是一样的