Java JDBC批处理插入数据操作
来源:互联网 发布:ai作图软件 编辑:程序博客网 时间:2024/05/16 09:48
原文:http://www.cnblogs.com/kahreman/archive/2012/08/06/2625827.html
方法一:
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.addBatch(query);}statemenet.executeBatch();statemenet.close();connection.close();
使用addBatch方法添加SQL,使用executeBatch一次性执行批量插入操作。
方法二:
当插入的数据是动态的,需要用PreparedStatement对象实现功能。
String sql = "insert into employee (name, city, phone) values (?, ?, ?)";Connection connection = new getConnection();PreparedStatement ps = connection.prepareStatement(sql); for (Employee employee: employees) { ps.setString(1, employee.getName()); ps.setString(2, employee.getCity()); ps.setString(3, employee.getPhone()); ps.addBatch();}ps.executeBatch();ps.close();connection.close();
操作类似Statement,只是增加了设置插入值的功能。
方法三:
上面的解决方案仍然存在一个问题。考虑这样一个场景,在您想要插入到数据库使用批处理上万条记录。嗯,可能产生的OutOfMemoryError:
java.lang.OutOfMemoryError: Java heap spacecom.mysql.jdbc.ServerPreparedStatement$BatchedBindValues.<init>(ServerPreparedStatement.java:72)com.mysql.jdbc.ServerPreparedStatement.addBatch(ServerPreparedStatement.java:330)org.apache.commons.dbcp.DelegatingPreparedStatement.addBatch(DelegatingPreparedStatement.java:171)
分批次执行批量插入操作
String sql = "insert into employee (name, city, phone) values (?, ?, ?)";Connection connection = new getConnection();PreparedStatement ps = connection.prepareStatement(sql);final int batchSize = 1000;int count = 0;for (Employee employee: employees) { ps.setString(1, employee.getName()); ps.setString(2, employee.getCity()); ps.setString(3, employee.getPhone()); ps.addBatch(); if(++count % batchSize == 0) { ps.executeBatch(); }}ps.executeBatch(); // insert remaining recordsps.close();connection.close();
考虑批量大小为1000,每1000个查询语句为一批插入提交。
1 0
- Java JDBC批处理插入数据操作
- Java JDBC批处理插入数据操作
- Java JDBC批处理插入数据操作
- Java JDBC批处理插入数据操作
- Java JDBC批处理插入数据操作
- Java JDBC批处理插入数据操作
- Java JDBC批处理插入数据操作
- Java JDBC批处理插入数据操作
- Java JDBC批处理插入数据操作
- Java JDBC批处理插入数据操作
- Java JDBC批处理插入数据操作
- Java JDBC批处理插入数据操作
- Java JDBC批处理插入数据操作
- Java JDBC批处理插入数据操作(转)
- Java JDBC批处理插入数据操作
- Java JDBC 批处理插入数据操作
- Java JDBC批处理插入数据操作
- Java JDBC批处理插入数据操作
- 二叉树
- 尊敬的用户:您访问的域名有误或网页不存在,您可以使用我们提供的一下服务
- 华硕笔记本,宽带连上,可以上网, 但收到不无线
- ABAP基础-SQL的嵌套使用
- 破解Myeclipse 10
- Java JDBC批处理插入数据操作
- 设置背景图循环滚动
- 红黑树
- 归并排序java实现
- 次小生成树
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等
- Kernel编译和链接中的linker script语法详解
- 回溯入门——八皇后和困难的串。
- ImageView.ScaleType设置图解