有下面两种情况:
1:
PreparedStatement pst=conn.prepareStatement(sql);
for(Object o:vt){
pst.setObject(1,o);
...
pst.executeUpdate();
...
}
2.
for(Object o:vt){
PreparedStatement pst=conn.prepareStatement(sql);
pst.setObject(1,o);
...
pst.executeUpdate();
...
pst.close;
}相对于数据库而言,那种性能更好?为什么
1:
PreparedStatement pst=conn.prepareStatement(sql);
for(Object o:vt){
pst.setObject(1,o);
...
pst.executeUpdate();
...
}
2.
for(Object o:vt){
PreparedStatement pst=conn.prepareStatement(sql);
pst.setObject(1,o);
...
pst.executeUpdate();
...
pst.close;
}相对于数据库而言,那种性能更好?为什么
解决方案 »
- Mysql jdbc 连接异常:Last packet sent to the server was 18948 ms ago
- JDK的环境配置
- 谁能给我个这文件jar
- jsp中的视图问题
- 一道编程题,求高手帮忙!
- 有什么好的方法去掉字符串里的',' 吗?
- 急!!!!为什么tomcat5.5的work??????
- 高薪诚聘java程序员
- 来点有难度的,跨页面贴图
- FileSystemXmlApplicationContext找不到applicationContext.xml的问题
- SSH启动tomcat报错
- 调用外部的webservice,报错!!(500)Internal Server Error
pst.executeUpdate();吧我想问下,第二种方法,数据库会解析几次:一次还是N次
有些问题即使知道结果 分析代码还是很有必要的数据库方面我不觉得会有什么差别 但是在JVM中,第二种方法会定义pst很多次 所以效果应该会差一点
(还有要注意的是oracle引擎有绑定变量的分级,他根据绑定变量长短可以将绑定变量分为四个级别,所以一条相同的sql因为绑定标量分级的不同也会进行硬解析,而不会使用共享游标,这个其实也算是执行环境不同)另外,就java而言第一种写法是标准规范的
PreparedStatement ps = connection.prepareStatement(sql);
for(Object o:vt){
ps.setObject(1,o);
ps.addBatch();
}int[] updateCounts = ps.executeBatch();conneciton.commit();
connection.setAutoCommit(true);