JDBC是Java连接数据库的标准API,它提供了访问不同数据库的接口,目前市场上主要的数据库有MySQL、Oracle、Microsoft SQL Server等。
批量插入(Batch Insert)是指将多条数据一次性写入数据库里,可以大大提高效率和减少数据库IO操作。
在JDBC中,使用PreparedStatement批量插入数据的方法如下:
- 准备SQL语句
INSERT INTO table_name (column1, column2, ...) VALUES (?, ?, ...);
在SQL语句中,需要使用占位符(?)来代替实际的数值。
- 创建PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
其中,conn为连接数据库的Connection对象,sql为准备好的SQL语句。
- 添加批处理数据
ps.setInt(1, 1);
ps.setString(2, "John");
ps.setFloat(3, 78.5f);
ps.addBatch();
ps.setInt(1, 2);
ps.setString(2, "Mary");
ps.setFloat(3, 90.0f);
ps.addBatch();
在这里,通过调用PreparedStatement的setXXX方法(如setInt、setString、setFloat等),向SQL语句中添加具体数值,并使用addBatch()函数将这些数据添加到批处理中。
- 执行批处理
int[] results = ps.executeBatch();
调用PreparedStatement的executeBatch()方法将批处理数据一次性提交到服务器,返回一个整型数组,表示每条语句所受影响的行数。
- 关闭资源
ps.close();
示例1:使用PreparedStatement批量插入1000条数据
String sql = "INSERT INTO student(name, age) VALUES (?, ?)";
PreparedStatement ps = conn.prepareStatement(sql);
for (int i = 1; i <= 1000; i++) {
ps.setString(1, "Student" + i);
ps.setInt(2, 18 + i % 5);
ps.addBatch();
}
int[] results = ps.executeBatch();
ps.close();
示例2:使用PreparedStatement批量更新1000条数据
String sql = "UPDATE student SET age = ? WHERE id = ?";
PreparedStatement ps = conn.prepareStatement(sql);
for (int i = 1; i <= 1000; i++) {
ps.setInt(1, 20 + i % 5);
ps.setInt(2, i);
ps.addBatch();
}
int[] results = ps.executeBatch();
ps.close();
以上就是JDBC使用PreparedStatement批量插入数据的完整攻略,通过批量插入可以极大提高程序的性能,是数据库程序中常用的优化方式之一。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jdbc使用PreparedStatement批量插入数据的方法 - Python技术站