PreparedStatement的问题

idilent 2007-01-08 05:55:51
java的文档是这样写的

An object that represents a precompiled SQL statement.

A SQL statement is precompiled and stored in a PreparedStatement object. This object can then be used to efficiently execute this statement multiple times.

那么如果这个PreparedStatement对象回收之后,这个SQL是不是就不再是precompiled的了?从网上找了些资料,说SQL是被Cache在数据库的,但是自己也作了测试,好像有点问题。

测试代码如下:
try{
Connection conn = JdbcConnectionUtil.getConnection();
long l = System.currentTimeMillis();
long l1 = System.currentTimeMillis();
///*
for(int I = 0; I < 20; ++I){
PreparedStatement ps = conn.prepareStatement("select * from tablename where ID = " + (I) );
ResultSet rs = ps.executeQuery();
System.out.println("---------------"+(System.currentTimeMillis()-l));
l = System.currentTimeMillis();
}
System.out.println("-------------------------------------" + (System.currentTimeMillis()-l1));
long l2 = System.currentTimeMillis();
for(int I = 0; I < 20; ++I){
PreparedStatement ps = conn.prepareStatement("select * tablename where ID = ?");
ps.setInt(1,I);
ResultSet rs = ps.executeQuery();
System.out.println("---------------"+(System.currentTimeMillis()-l));
l = System.currentTimeMillis();
}
System.out.println("-------------------------------------" + (System.currentTimeMillis()-l2));


long l3 = System.currentTimeMillis();
PreparedStatement ps = conn.prepareStatement("select * tablename where ID = ?");
for(int I = 0; I < 20; ++I){
ps.setInt(1,I);
ResultSet rs = ps.executeQuery();
System.out.println("---------------"+(System.currentTimeMillis()-l));
l = System.currentTimeMillis();
}
System.out.println("-------------------------------------" + (System.currentTimeMillis()-l3));

}catch(Exception e){}
打印出来的结果如下:
---------------829
---------------375
---------------0
---------------1140
---------------1391
---------------3187
---------------1907
---------------4000
---------------62
---------------1156
---------------125
---------------1485
---------------0
---------------0
---------------0
---------------235
---------------468
---------------27485
---------------1844
---------------562
-------------------------------------46266
---------------875
---------------359
---------------0
---------------1219
---------------1344
---------------2750
---------------1969
---------------4000
---------------47
---------------1203
---------------93
---------------1469
---------------0
---------------0
---------------16
---------------219
---------------500
---------------27375
---------------3765
---------------938
-------------------------------------48141
---------------828
---------------359
---------------0
---------------1531
---------------1391
---------------2797
---------------2125
---------------3968
---------------47
---------------1141
---------------109
---------------1453
---------------0
---------------0
---------------0
---------------203
---------------500
---------------26813
---------------1797
---------------500
-------------------------------------45578


似乎没有什么影响呀?

参考文献:
http://www.theserverside.com/tt/articles/article.tss?l=Prepared-Statments
...全文
293 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
idilent 2007-01-12
  • 打赏
  • 举报
回复
再顶
idilent 2007-01-10
  • 打赏
  • 举报
回复
up
idilent 2007-01-10
  • 打赏
  • 举报
回复
没人知道吗?
Moon 2007-01-10
  • 打赏
  • 举报
回复
可以增加代码的可读性
Moon 2007-01-10
  • 打赏
  • 举报
回复
这个是预创建一条语句啊
和一般的Statement基本相同
但是写的时候格式上清晰很多了~
idilent 2007-01-08
  • 打赏
  • 举报
回复
up
本课程详细讲解了以下内容:    1.jsp环境搭建及入门、虚拟路径和虚拟主机、JSP执行流程    2.使用Eclipse快速开发JSP、编码问题、JSP页面元素以及request对象、使用request对象实现注册示例    3.请求方式的编码问题、response、请求转发和重定向、cookie、session执行机制、session共享问题     4.session与cookie问题及application、cookie补充说明及四种范围对象作用域     5.JDBC原理及使用Statement访问数据库、使用JDBC切换数据库以及PreparedStatement的使用、Statement与PreparedStatement的区别     6.JDBC调用存储过程和存储函数、JDBC处理大文本CLOB及二进制BLOB类型数据     7.JSP访问数据库、JavaBean(封装数据和封装业务逻辑)     8.MVC模式与Servlet执行流程、Servlet25与Servlet30的使用、ServletAPI详解与源码分析     9.MVC案例、三层架构详解、乱码问题以及三层代码流程解析、完善Service和Dao、完善View、优化用户体验、优化三层(加入接口和DBUtil)    1 0.Web调试及bug修复、分页SQL(Oracle、MySQL、SQLSERVER)     11.分页业务逻辑层和数据访问层Service、Dao、分页表示层Jsp、Servlet     12.文件上传及注意问题、控制文件上传类型和大小、下载、各浏览器下载乱码问题     13.EL表达式语法、点操作符和中括号操作符、EL运算、隐式对象、JSTL基础及set、out、remove     14.过滤器、过滤器通配符、过滤器链、监听器     15.session绑定解绑、钝化活化     16.以及Ajax的各种应用     17. Idea环境下的Java Web开发

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧