JDBC的批量插入
来源:互联网 发布:淘宝哪家火锅底料好 编辑:程序博客网 时间:2024/05/01 19:03
一、JDBC的批量插入
} catch (SQLException ex) {
} catch (ClassNotFoundException ex) {
}
说明下在建Statement的时候,后面两个参数的意义:
第一个参数指定 ResultSet 的类型。其选项有:
TYPE_FORWARD_ONLY:缺省类型。只允许向前访问一次,并且不会受到其他用户对该数据库所作更改的影响。
TYPE_SCROLL_INSENSITIVE:允许在列表中向前或向后移动,甚至可以进行特定定位,例如移至列表中的第四个记录或者从当前位置向后移动两个记录。不会受到其他用户对该数据库所作更改的影响。
TYPE_SCROLL_SENSITIVE:象 TYPE_SCROLL_INSENSITIVE 一样,允许在记录中定位。这种类型受到其他用户所作更改的影响。如果用户在执行完查询之后删除一个记录,那个记录将从 ResultSet 中消失。类似的,对数据值的更改也将反映在 ResultSet 中。
第二个参数设置 ResultSet 的并发性,该参数确定是否可以更新 ResultSet。其选项有:
CONCUR_READ_ONLY:这是缺省值,指定不可以更新
ResultSet CONCUR_UPDATABLE:指定可以更新 ResultSet
方法二 使用Statement加批量的方法
Java代码
stmt.executeBatch();
conn.commit();
方法三:直接使用Statement
Java代码
conn.setAutoCommit(false);
Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
for(int x = 0; x < size; x++){
}
conn.commit();
使用上述方法分别插入10万条数据的平均测试时间为:
方法一:17.844s
方法二:18.421s
方法三:16.359s
可以看出JDBC的batch语句插入不但没有性能提升,反而比没有用batch的时候要慢,当然这可能跟JDBC具体驱动的实现方法有关。 附件中是我测试代码,可以用来在自己电脑上跑一下。
在执行批量插入的时候最主要的是将自动提交取消,这样不管是否用JDBC的batch语法应该都没有关系。
Java代码
conn.setAutoCommit(false)
二、JDBC的批量更新
//conn是Connection的类型
//若a为true则意味着该数据是支持批量更新的
boolean a=dbmd.supportsBatchUpdates();
这个又是一种方法批量进行更新。但是我认为上面那个方法不错
三、JDBC批量删除
String sql="delete from table where id in(0";
String id[]=要删除的ID数组;
for(int i=0;i <id.length;i++)
{
}
sql+=")";
PreparedStatement ps=conn.prepareStatement(sql);
ps.execute();
-
public void deleteBat(Integer[] catNo){ - try
{ -
Connection con=DBUtil.getInstance().getCon(); -
String sql= from ;cat where catno=?" -
con.setAutoCommit( -
PreparedStatement ps=con.prepareStatement(sql); -
(Integer in : catNo) { -
ps.setInt( in); -
ps.addBatch(); -
} -
result=ps.executeBatch(); -
con.commit(); -
( inti : result) { -
System.out.println(i); -
} - }
catch (ClassNotFoundException e) { -
e.printStackTrace(); - }
catch (SQLException e) { -
e.printStackTrace(); - }
http://blog.sina.com.cn/s/blog_662e56ec0100jtg5.html
- JDBC的批量批量插入
- JDBC的批量批量插入
- JDBC的批量插入
- JDBC的批量插入
- JDBC的批量插入操作
- JDBC批量插入数据的性能测试
- JDBC批量插入数据的方法
- JDBC rewriteBatchedStatements对批量插入的影响
- JDBC 百万级别的批量插入
- Hibernate的批量插入(&&JDBC)
- 用原始的jdbc批量插入数据
- JDBC 批量插入记录
- jdbc 批量插入
- Jdbc 批量插入
- jdbc批量插入
- jdbc批量插入数据
- jdbc批量插入2
- JDBC批量插入
- 总结2011 展望2012
- 更改表空间名称
- 开源网络爬虫介绍及其比较
- winxp蓝屏(rt61.sys)
- sqlserver 数据库 float类型 计算BUG!?
- JDBC的批量插入
- 傅立叶的贡献
- 一个关于指针间赋值及间接求值的问题
- 个人收集史上最全的App Store邮箱列表
- jquery和js绑定事件的不同
- pthread_create函数编译时报错:undefined reference to 'pthread_create'
- Oracle物化视图失效分析
- MySQL快速掌握之进阶篇
- EV,HEV,PHEV的区别