黑马程序员技术交流社区

标题: PreparedStatement和Statement的一些疑问 [打印本页]

作者: wowo6288    时间: 2014-1-17 20:32
标题: PreparedStatement和Statement的一些疑问
最近做连接数据库方面的程序遇到了这样的情况,JDBC中的用到了PreparedStatement和Statement它们二者到底最大的区别是什么,好像二者都可以使用没有问题呢,我只知道PreparedStatement可以简化SQL语句,提供方便难道没有其他的差异了吗
作者: qisikudingcha    时间: 2014-1-17 21:08
PreparedStatement是预编译的,预编译的语句在编译器编译后的执行代码被缓存下来,下次调用时只要是相同的预编译语句就不需要编译,就知道这么多。。。
作者: 七录斋    时间: 2014-1-17 21:09
preparedStatement是预编译的,当你执行sql语句时可以直接运行,不需要先编译,因为它是预编译的,所以在针对批量处理上可以节省时间提高效率,另外,在oracle数据库开发时,由于oracle数据库会缓存sql语句便于以后使用,所以有些时候由于驱动器自身需要额外的处理和在Java应用程序和Oracle服务器间增加的网络活动,执行PreparedStatement对象实际上会花更长的时间。
对于statement对象,在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理,而PreparedStatement 对象的开销比Statement大,对于一次性操作并不见得会比statement好。

个人拙见,仅供参考,如有错误,还望赐教。
作者: 李跃峰    时间: 2014-1-17 23:24
PreparedStatement是预编译的,效率高,具体的上面几位都说了,我就不说这块了,说说别的

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

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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2