关于PrepareStatement可以提高性能的一个问题!!!

jd29323 2003-03-17 09:55:10
我知道应该使用PrepareStatement以提高性能
但有一个问题是,使用PrepareStatement的使用要
写很多setXXX
如果我仍然象使用statement一样写SQL可以吗?
比如:
pstmt=connection.prepareStatement("select * from mytable where col=?");
pstmt.setString(1,"xxx");
pstmt.execute();
这样写程序,可以提高性能,但如果我写成:
pstmt=connection.prepareStatement("select * from mytable where col='xxx'");
pstmt.execute();
效果和使用setXXX的方式一样吗?
是不是依然会利用到预编译的特性呢?
...全文
48 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
secrets001 2003-03-18
  • 打赏
  • 举报
回复
楼上的……
你不说明是哪个表,人家咋给你预编译阿
bubblebird 2003-03-18
  • 打赏
  • 举报
回复
参数中好像不能将表名传进去,太不方便了
如 select * from ? where ...
pstmt.setString(1,"table1");就不行,没天理
wdman 2003-03-17
  • 打赏
  • 举报
回复
gz
l_walker 2003-03-17
  • 打赏
  • 举报
回复
那么,所有的SQL都用preparestatement的效果如何?
kofwr 2003-03-17
  • 打赏
  • 举报
回复
预编译只对传递多个?进去的东西有效,你这种"select * from mytable where col='xxx'"用;prepareStatement去执行,不敢说性能差,但是肯定没效果...
wafer_w 2003-03-17
  • 打赏
  • 举报
回复
楼上的有道理
secrets001 2003-03-17
  • 打赏
  • 举报
回复
对于每个sql语句,数据库和jdbc驱动必须把他们映射到底层数据库可以理解的操作,如果能压缩合并这个步骤,就可以提高性能。
向你的第一个那样:
pstmt.setString(1,"xxx");
pstmt.execute();
pstmt.setString(1,"yyy");
pstmt.execute();
执行第二次的时候,性能将提高。
而你的第二个,由于没有?,“select * from mytable where col='xxx'”和select * from mytable where col='yyy'"在底层是不同的两个,个人认为,性能应该比直接执行还要低,至多是一样的。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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