A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wowo6288 中级黑马   /  2014-1-17 20:32  /  1020 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

最近做连接数据库方面的程序遇到了这样的情况,JDBC中的用到了PreparedStatement和Statement它们二者到底最大的区别是什么,好像二者都可以使用没有问题呢,我只知道PreparedStatement可以简化SQL语句,提供方便难道没有其他的差异了吗

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

3 个回复

倒序浏览
PreparedStatement是预编译的,预编译的语句在编译器编译后的执行代码被缓存下来,下次调用时只要是相同的预编译语句就不需要编译,就知道这么多。。。
回复 使用道具 举报
preparedStatement是预编译的,当你执行sql语句时可以直接运行,不需要先编译,因为它是预编译的,所以在针对批量处理上可以节省时间提高效率,另外,在oracle数据库开发时,由于oracle数据库会缓存sql语句便于以后使用,所以有些时候由于驱动器自身需要额外的处理和在Java应用程序和Oracle服务器间增加的网络活动,执行PreparedStatement对象实际上会花更长的时间。
对于statement对象,在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理,而PreparedStatement 对象的开销比Statement大,对于一次性操作并不见得会比statement好。

个人拙见,仅供参考,如有错误,还望赐教。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
PreparedStatement是预编译的,效率高,具体的上面几位都说了,我就不说这块了,说说别的

PreparedStatement的语句使用占位符填充,Statement则是把语句写死,这有至少两个区别,用占位符填充的相对比较灵活,而写死的就不用说了。

再有PreparedStatement因为用占位符,所以安全性要高很多,如果用Statement组串的话,会有SQL注入的安全问题

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马