Java Statement和PreparedStatement性能测试(转)
本文转载自http://blog.csdn.net/liubo5005/article/details/7239935
先上代码:
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.Statement;
- public class TestSql {
- public static void main(String[] args) throws Exception {
- testStatement();
- testBatchPreparedStatement();
- testBatchPreparedStatement();
- }
- public static void testStatement() throws Exception {
- Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
- String url = "jdbc:db2://172.17.252.68:60012/glhssdb";
- Connection con = DriverManager.getConnection(url, "ppapdb2", "ppapdb2");
- Statement st = con.createStatement();
- Long beginTime1 = System.currentTimeMillis();
- System.out.print("insert...");
- for (int i = 0; i < 100000; i++) {
- String sql = "insert into GL_HISDB.TESTSQL(id,name) values (" + i
- + ",'" + i + "')";
- st.executeUpdate(sql);
- }
- Long endTime1 = System.currentTimeMillis();
- System.out.println("st:" + (endTime1 - beginTime1) / 1000 + "秒");// 计算时间
- st.close();
- con.close();
- }
- public static void testPreparedStatement() throws Exception {
- Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
- String url = "jdbc:db2://172.17.252.68:60012/glhssdb";
- Connection con = DriverManager.getConnection(url, "ppapdb2", "ppapdb2");
- PreparedStatement pst = con
- .prepareStatement("insert into GL_HISDB.TESTSQL(id,name) values (?,?)");
- Long beginTime1 = System.currentTimeMillis();
- System.out.print("insert...");
- for (int i = 0; i < 100000; i++) {
- pst.setInt(1, i);
- pst.setString(2, "" + i);
- pst.execute();
- }
- Long endTime1 = System.currentTimeMillis();
- System.out.println("pst:" + (endTime1 - beginTime1) / 1000 + "秒");// 计算时间
- pst.close();
- con.close();
- }
- public static void testBatchPreparedStatement() throws Exception {
- Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
- String url = "jdbc:db2://172.17.252.68:60012/glhssdb";
- Connection con = DriverManager.getConnection(url, "ppapdb2", "ppapdb2");
- PreparedStatement pst = con
- .prepareStatement("insert into GL_HISDB.TESTSQL(id,name) values (?,?)");
- Long beginTime1 = System.currentTimeMillis();
- con.setAutoCommit(false);// 手动提交
- System.out.print("insert...");
- for (int i = 0; i < 100000; i++) {
- pst.setInt(1, i);
- pst.setString(2, "" + i);
- pst.addBatch();
- if (i % 1000 == 0) {// 可以设置不同的大小;如50,100,500,1000等等
- pst.executeBatch();
- con.commit();
- pst.clearBatch();
- }
- }
- Long endTime1 = System.currentTimeMillis();
- System.out.println("pst batch:" + (endTime1 - beginTime1) / 1000 + "秒");// 计算时间
- pst.close();
- con.close();
- }
- }
三种调用方式Statment、PreparedStatement 以及PreparedStatement Batch,往DB2数据库插入10万条数据,跑出来的时间为:
1、insert...st:291秒 2、insert...pst:150秒 3、insert...pst batch:5秒
总结引用经典:在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement。
Java Statement和PreparedStatement性能测试(转)的更多相关文章
- 【Java编程】JDBC注入攻击-Statement 与 PreparedStatement
在上一篇[Java编程]建立一个简单的JDBC连接-Drivers, Connection, Statement and PreparedStatement我们介绍了怎样使用JDBC驱动建立一个简单的 ...
- 【Java编程】建立一个简单的JDBC连接-Drivers, Connection, Statement and PreparedStatement
本blog提供了一个简单的通过JDBC驱动建立JDBC连接例程.并分别通过Statement和PreparedStatement实现对数据库的查询. 在下一篇blog中将重点比較Statement与P ...
- Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别? Java 中访问数据库的步骤 1)注册驱动: 2)建立连接: 3)创建Statement: 4)执 ...
- Java的Statement、PreparedStatement、PreparedStatement + 批处理 的区别
首先来说一下连接了数据库之后执行的sql语句:通常连接了数据库之后,我们就会获得statement 类的对象或者是他的子类的对象(PreparedStatement类),通过这个对象我们就可以利用它提 ...
- Statement和PreparedStatement的区别; 什么是SQL注入,怎么防止SQL注入?
问题一:Statement和PreparedStatement的区别 先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接 ...
- 理解 Statement 和 PreparedStatement
java,servlet中的PreparedStatement 接口继承了Statement,并与之在两方面有所不同:有人主张,在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以Prepar ...
- Statement和PreparedStatement的特点 MySQL数据库分页 存取大对象 批处理 获取数据库主键值
1 Statement和PreparedStatement的特点 a)对于创建和删除表或数据库,我们可以使用executeUpdate(),该方法返回0,表示未影向表中任何记录 b)对于创建和 ...
- Statement和PreparedStatement的区别; 什么是SQL注入,怎么防止SQL注入? (转)
问题一:Statement和PreparedStatement的区别 先来说说,什么是java中的Statement:Statement是java执行数据库操作的一个重要方法,用于在已经建立数据库连接 ...
- JDBC中的Statement和PreparedStatement的差别
以Oracle为例吧 Statement为一条Sql语句生成运行计划, 假设要运行两条sql语句 select colume from table where colume=1; select col ...
随机推荐
- java正则表达式 --简单认识
学习目标 正则表达式的作用正则表达式的模式匹配Pattern类和Matcher类的使用掌握String对正则的支持具体内容一.认识正则(为什么要有正则) 方便的对数据进行匹配 执行复杂的字符串验证.拆 ...
- 后缀.jar的是什么文件?
解压kafka 打开后是一堆.jar结尾的文件,那么后缀.jar的是什么文件? JAR 文件就是 Java Archive File,顾名思意,它的应用是与 Java 息息相关的,是 Java 的一种 ...
- editplus的配置和使用
editplus以及其他所有软件的 "页" 是一个什么概念? 所谓 页 : 是指 当前 你看到的 "客户区" client 的区域大小. 如果窗口越小, 那么你 ...
- zend stuido 12.5的插件安装和xdebug调试器的配置和和配置注意
参考: zend stuido 12.5的插件安装 zend 12.5 安装插件是按类别进行分类了的, 而且是在欢迎 界面就可以直接安装, 安装后,要重启zend才能生效 版式设计的一个基本点就是: ...
- PHP从零开始-笔记-面向对象编程的概念
面向对象变成的概念 需要一一种不同的方式来考虑如何构造应用程序.通过对象可以在对应用程序所处理的显示任务.过程和思想进行编码是,实施更贴切的建模.OOP方法并不是将应用程序考虑成一个将大量数据从一个函 ...
- flask 项目的开发经验总结
已经开发了几个flask项目, 是时候总结一下了, 这里涉及到项目源码的组织, 常用的包, 源码示例. =========================需要的 python 包有:========= ...
- 支付安全基础 —— HTTPS的故事
本文主要讲述了HTTPS的基本原理,通过HTTPS握手过程.证书链.中间人攻击.CA机构等问题,详细解释了百付宝系统中用到的HTTPS安全知识,同时,介绍了如何查看www.baifubao.com的 ...
- 如何查看华为EMUI系统APK源码?
最近想看一下华为EMUI里面的某些系统APK是如何实现的. 那如何获取系统APK呢? 有两种方式: 1.安装豌豆荚,豌豆荚里有一个应用管理的功能,可以查看手机里的所有应用,包括系统应用. 可以使用该功 ...
- tcp三次握手与四次挥手
- lua 使用
根据公司自身业务需要,总结常用到的lua语法 Lua中的string库 链接:http://www.jb51.net/article/57613.htm string.len(s) ...