日期:2014-05-16  浏览次数:20527 次

JAVA采用JDBC执行批处理操作注意的问题

让我们看看如何使用JDBC API在Java中执行批量插入。虽然你可能已经知道,但我会尽力解释基础到复杂的场景。

?
在此笔记里,我们将看到我们如何可以使用像Statement和PreparedStatement JDBC API来批量在任何数据库中插入数据。此外,我们将努力探索一些场景,如在内存不足时正常运行,以及如何优化批量操作。
?
首先,使用Java JDBC基本的API批量插入数据到数据库中。
?

Simple Batch - 简单批处理

?我把它叫做简单批处理。要求很简单,执行批量插入列表,而不是为每个INSERT语句每次提交数据库,我们将使用JDBC批处理操作和优化性能。

?
想想一下下面的代码:

Bad Code

?

String [] queries = {

? ? "insert into employee (name, city, phone) values ('A', 'X', '123')",

? ? "insert into employee (name, city, phone) values ('B', 'Y', '234')",

? ? "insert into employee (name, city, phone) values ('C', 'Z', '345')",

};

?

Connection connection = new getConnection();

Statement statemenet = connection.createStatement();

?

for (String query : queries) {

? ? statemenet.execute(query);

}

statemenet.close();

connection.close();

?

?这是糟糕的代码。它单独执行每个查询,每个INSERT语句的都提交一次数据库。考虑一下,如果你要插入1000条记录呢?这是不是一个好主意。

?

下面是执行批量插入的基本代码。来看看:

?

Good Code

?

Connection connection = new getConnection();

Statement statemenet = connection.createStatement();

?

for (String query : queries) {

? ? statemenet.addBatch(query);

}

statemenet.executeBatch();

statemenet.close();