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

© 刘晓康 中级黑马   /  2012-4-14 12:21  /  1585 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java 操作数据库是用PreparedStatement 对象好还是用Statement对象好呢?

3 个回复

倒序浏览
PreparedStatement是Statement的子接口
1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程;
2.如果对数据库只执行一次性存取,则建议用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处;
3.statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译的,   preparedstatement支持批处理。
回复 使用道具 举报
JDBC驱动的最佳化是基于使用的是什么功能。选择PreparedStatement还是Statement取决于你要怎么使用它们。对于只执行一次的SQL语句选择Statement是最好的。 相反,如果SQL语句被多次执行选用PreparedStatement是最好的。
  PreparedStatement的第一次执行消耗是很高的。它的性能体现在后面的重复执行。例如, 假设我使用Employee ID,使用prepared的方式来执行一个针对Employee表的查询。JDBC驱动会发送一个网络请求到数据解析和优化这个查询,而执行时会产生另一个网络请求。在JDBC驱动中,减少网络通讯是最终的目的。如果我的程序在运行期间只需要一次请求,那么就使用Statement。对于Statement,同一个查询只会产生一次网络到数据库的通讯。
回复 使用道具 举报
1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程
2.使用 Statement 对象。在对数据库只执行一次性存取的时侯,用 Statement 对象进行处理。PreparedStatement 对象的开销比Statement大,对于一次性操作并不会带来额外的好处preparedStatement执行效率比statement执行率低。
3.statement每次执行sql语句,相关数据库都要执行sql语句的编译,preparedstatement是预编译得, preparedstatement支持批处理PreparedStatement 能最大可能提高性能:DBServer会对预编译语句提供性能优化。因为预编译语句有可能被重复调用,所以语句在被DBServer的编译器编译后的执行代码被缓存下来,那么下次调用时只要是相同的预编译语句就不需要编译,只要将参数直接传入编译过的语句执行代码中就会得到执行。 PreparedStatement能保证安全性
在statement语句中,即使是相同操作但因为数据内容不一样,所以整个语句本身不能匹配,没有缓存语句的意义.事实是没有数据库会对普通语句编译后的执行代码缓存.这样每执行一次都要对传入的语句编译一次。
   
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马