黑马程序员技术交流社区

标题: PreparedStatement,Statement比较 [打印本页]

作者: 刘晓康    时间: 2012-4-14 12:21
标题: PreparedStatement,Statement比较
java 操作数据库是用PreparedStatement 对象好还是用Statement对象好呢?
作者: 李震 李震 李震    时间: 2012-4-14 12:41
PreparedStatement是Statement的子接口
1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程;
2.如果对数据库只执行一次性存取,则建议用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处;
3.statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译的,   preparedstatement支持批处理。
作者: 陈志伟    时间: 2012-4-14 14:38
JDBC驱动的最佳化是基于使用的是什么功能。选择PreparedStatement还是Statement取决于你要怎么使用它们。对于只执行一次的SQL语句选择Statement是最好的。 相反,如果SQL语句被多次执行选用PreparedStatement是最好的。
  PreparedStatement的第一次执行消耗是很高的。它的性能体现在后面的重复执行。例如, 假设我使用Employee ID,使用prepared的方式来执行一个针对Employee表的查询。JDBC驱动会发送一个网络请求到数据解析和优化这个查询,而执行时会产生另一个网络请求。在JDBC驱动中,减少网络通讯是最终的目的。如果我的程序在运行期间只需要一次请求,那么就使用Statement。对于Statement,同一个查询只会产生一次网络到数据库的通讯。

作者: 陈扬    时间: 2012-4-14 17:10
1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程
2.使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处preparedStatement执行效率比statement执行率低。
3.statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得, preparedstatement支持批处理PreparedStatement 能最大可能提高性能:DBServer会对预编译语句提供性能优化。因为预编译语句有可能被重复调用,所以语句在被DBServer的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中就会得到执行。 PreparedStatement能保证安全性
在statement语句中,即使是相同操作但因为数据内容不一样,所以整个语句本身不能匹配,没有缓存语句的意义.事实是没有数据库会对普通语句编译后的执行代码缓存.这样每执行一次都要对传入的语句编译一次。
   




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