Java jdbc批量插入数据
时间: 2024-10-29 20:05:59 浏览: 44
在Java中,JDBC (Java Database Connectivity) 提供了用于数据库交互的功能,包括批量插入数据。批量插入是一种提高性能的技术,它允许一次将多个记录添加到表中,而不是逐一执行INSERT语句。以下是批量插入的基本步骤:
1. 创建Statement对象或PreparedStatement对象(预编译语句可以防止SQL注入):
```java
Connection conn = DriverManager.getConnection(url, username, password);
Statement stmt; // 或 PreparedStatement pstmt;
```
2. 设置PreparedStatement的批处理模式(如果使用PreparedStatement):
```java
stmt.setBatchSize(batchSize); // 如果是Statement,无此操作
```
3. 遍历需要插入的数据,构建SQL语句数组或PreparedStatement实例:
```java
List<PreparedStatement> preparedStmts = new ArrayList<>();
for (YourData data : dataList) {
String sql = "INSERT INTO your_table VALUES (?, ?, ...)";
if (pstmt != null) { // 使用PreparedStatement
pstmt.setInt(1, data.id);
pstmt.setString(2, data.name);
// ...
preparedStmts.add(pstmt.copy());
} else { // 使用Statement
stmt.setString(sql, data.id, data.name);
// ...
}
}
```
4. 执行批量插入:
```java
try {
for (PreparedStatement pstmt : preparedStmts) {
pstmt.executeBatch();
}
} catch (SQLException e) {
for (int i = 0; i < preparedStmts.size(); i++) {
try {
pstmt.close(); // 关闭未执行成功的PreparedStatement
} catch (SQLException ex) {}
}
throw e; // 抛出异常并处理
}
// 清理资源
conn.setAutoCommit(autoCommitOriginalState);
try {
conn.commit();
} catch (SQLException e) {
conn.rollback();
throw e;
}
finally {
closeResources(conn, stmt, pstmt);
}
```
阅读全文