JDBC中Statement和PreparedStatement性能的比较
来源:互联网 发布:微信大屏幕霸屏源码 编辑:程序博客网 时间:2024/06/04 18:57
1.模拟测试的环境
(1)分别创建两个函数作为Statement和PreparedStatement测试方法
(2)分别向数据库插入10000条数据;
(3)比较Statement和PreparedStatement花费时间
测试如下:
//利用Statement进行数据的添加 @SuppressWarnings("unused") private static void test_Statement() throws Exception { long start=System.currentTimeMillis(); Connection con=null; Statement state=null; try{ con=DBUtil.getConnection(); con.setAutoCommit(false); state=con.createStatement(); for(int x=0;x<500000;x++){ String sql="insert into user(name,password) values('"+"tim"+x+"',"+x+");"; int num=state.executeUpdate(sql); } }catch(Exception e){ con.rollback(); e.printStackTrace(); } con.commit(); DBUtil.close(null, state, con); System.out.println("总时间:"+(System.currentTimeMillis()-start)); }
//利用PreparedStatement进行数据的添加 @SuppressWarnings("unused") private static void test_PreparedStatement() throws Exception { long start=System.currentTimeMillis(); Connection con=null; PreparedStatement ps=null; try{ con=DBUtil.getConnection(); con.setAutoCommit(false); String sql="insert into user(name,password) values(?,?);"; ps=con.prepareStatement(sql); for(int x=0;x<500000;x++){ ps.setString(1, "tim"+x); ps.setInt(2, x); ps.executeUpdate(); } }catch(Exception e){ con.rollback(); e.printStackTrace(); } con.commit(); DBUtil.close(null, ps, con); System.out.println("总时间:"+(System.currentTimeMillis()-start)); }
时间对比:
Statement :
-| 100000 —消耗时间—>11034毫秒;
-| 200000 —消耗时间—>20654毫秒;
-| 500000 —消耗时间—>52206毫秒;
PreoaredStatement:
-| 100000 —消耗时间—>10411毫秒;
-| 200000 —消耗时间—>20836毫秒;
-| 500000 —消耗时间—>48999毫秒;
实验结果对比
随着数据的不断增大,PreparedStatement的效果是Statement
的效果要好。
在安全性上PreparedStatement会进行预处理编译,在数据的安全性上PreparedStatement是可以防止Statement的sql注入导致的漏洞问题
0 0
- JDBC中Statement和PreparedStatement性能的比较
- JDBC中Statement,PreparedStatement和CallableStatement的比较
- jdbc中 PreparedStatement 和Statement的区别
- JDBC中Statement和PreparedStatement
- JDBC的Statement和PreparedStatement
- jdbc PreparedStatement Statement 比较
- Statement 和 PreparedStatement的比较
- JAVA中JDBC的Statement和PreparedStatement之间的区别
- JDBC中Statement和PreparedStatement的择弃
- jdbc中Statement、PreparedStatement和CallableStatement的区别
- JDBC中Statement、PreparedStatement和CallableStatement的使用
- JDBC中Statement接口和PreparedStatement接口的差异性
- 在jdbc中Statement 和 PreparedStatement 之间的区别?
- JDBC 中preparedStatement和Statement区别
- JDBC中Statement与PreparedStatement的区别
- JDBC中Statement与PreparedStatement的区别
- JDBC中Statement与PreparedStatement的区别
- JDBC中Statement与PreparedStatement的区别
- 好的学习资源-好好学习
- C++QRCode生成
- Android代码练习:网格布局
- 4.9.2 ArrayList 列表
- 安卓 编译c/c++生成elf二进制可执行文件 交叉编译
- JDBC中Statement和PreparedStatement性能的比较
- studio开发文件被锁报错解决
- 详解 Android 的 Activity 组件
- 一个简单的android便签app
- 【Unity Shader】Shadow Caster、RenderType和_CameraDepthTexture
- 蓝桥杯模拟赛第五场
- [JZOJ5039]查询
- 使用链表实现栈(C语言)
- Android学习教程(二)之Activity启动模式