本人在项目中,需要一次向数据库中插入多条数据!
我是用for循环插入的,感觉效率太慢,安全性太差!
先求如何快速,批量,一次性插入到数据库多条数据!
我是用for循环插入的,感觉效率太慢,安全性太差!
先求如何快速,批量,一次性插入到数据库多条数据!
解决方案 »
- oracle数据库完整导入到sql server java代码
- 请教如何中断html+java前台代码的执行
- 我下的spring文档为什么都不能用啊?
- 急问acegi的方法保护中的advisor设置
- 我用freemarker导出的xml文件在我的机器上显示是中文内容,为什么到别的机器上就成了乱码呢?
- 一部机安装多个tomcat session问题.
- 北京博彦科技招聘
- 我的设想能否实现?分不是问题,先放100分
- 我想开发一个中型的B/s系统,用J2ee好不好
- 初学java,请问Jsp和J2ee有什么关系,呵呵,简单问题
- 请会SSH框架整合的高手帮忙改错,会的联系我QQ:17651854,在线等~~
- SSH radio选择注入问题
PreparedStatement.executeBatch();
PreparedStatement.executeBatch();一次最多不要超过50条:
1.因为当你插入的时候 数据库已经锁定,然而如果你一次性插入太多会造成其他业务的等待。
2.会造成内存的溢出
Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://" +
"localhost:3306/excel2mysql", "wanle", "wanle");
// 关闭事务自动提交
con.setAutoCommit(false);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");
TimeZone t = sdf.getTimeZone();
t.setRawOffset(0);
sdf.setTimeZone(t);
Long startTime = System.currentTimeMillis();
PreparedStatement pst = (PreparedStatement) con.prepareStatement("insert into test04 values (?,'中国')");
for (int i = 0; i < 10000; i++) {
pst.setInt(1, i);
// 把一个SQL命令加入命令列表
pst.addBatch();
}
// 执行批量更新
pst.executeBatch();
// 语句执行完毕,提交本事务
con.commit();
Long endTime = System.currentTimeMillis();
System.out.println("用时:" + sdf.format(new Date(endTime - startTime)));
pst.close();
con.close();