`
acf
  • 浏览: 35105 次
文章分类
社区版块
存档分类
最新评论

PreparedStatement与Statement

阅读更多

一般大家都会认为PreparedStatement执行SQL的效率会比Statement的高,其实这个不完全正确的。

其实事实是这样的,创建一个PreparedStatement对象到返回ResultSet对象,比创建一个Statement对象到返ResultSet对象的效率要低。原因就在于DBMS服务器的收PreparedStatement对象发送来的SQL时,要预编译处理。而DBMS在收到Statement对象发送来的SQL时,直接编译SQL。预编译比直接编译的开销要大,而预编译的好处是这条SQL可以改变参数执行多次查询。所以单独执行一条SQL时,PreparedStatement会比Statement的效率低。

那么为什么说PreparedStatement比Statement的效率高呢,在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率要高。

其实,还有一个要注要意的细节,如果将连接的自动提交模式设为true,用PreparedStatement来处理一条有可变参数的SQL时,你每次改变了参数后,DBMS还会做预编译处理,与Statement处理的情形一样,所以不能达到提高效率的要求。所以要想用PreparedStatement来提高应用的效率,要满足两个条:1.这条SQL存在可变参数;2.连接的自动提交模式设为false。

分享到:
评论
2 楼 acf 2008-06-23  
贴子被发配到这里很不公平啊!
好多人知其一不知其二,都以为PreparedStatement的性能比Statement高,而且有的人用PreparedStatement时又没有用好,反而事得其反。
郁闷,不得志啊。
1 楼 Ethip 2008-06-20  
效率是相对的

相关推荐

    java中PreparedStatement和Statement的区别

    Java 中 PreparedStatement 和 Statement 的区别 Java 中的 PreparedStatement 和 Statement 都是用于执行 SQL 语句的接口,但是它们之间存在一些关键的区别。 首先,从数据库执行 SQL 语句的角度来看,使用 ...

    Statement和PreparedStatement之间的区别

    Statement和PreparedStatement之间的区别 Statement和PreparedStatement是JDBC中的两种不同的语句对象,用于执行数据库操作。虽然它们都可以执行SQL语句,但是它们之间存在着很大的区别。 首先, Statement对象...

    34.jdbc中preparedStatement比Statement的好处.avi

    jdbc中preparedStatement比Statement的好处

    PreparedStatement和Statement

    在Java编程中,数据库操作是常见任务之一,而`PreparedStatement`和`Statement`是Java JDBC(Java Database Connectivity)中用于执行SQL语句的两种主要接口。它们都是`java.sql`包下的类,用来与数据库进行交互,但...

    Java面试题34.jdbc中preparedStatement比Statement的好处.mp4

    Java面试题34.jdbc中preparedStatement比Statement的好处.mp4

    jdbc连接各数据库及事务处理

    2. 批量处理:使用`Statement`或`PreparedStatement`的`addBatch()`和`executeBatch()`方法进行批量SQL操作,减少网络通信次数。 3. 数据库连接池:通过连接池管理数据库连接,避免频繁创建和关闭连接,提高系统效率...

    华为的java电话面试10题.docx

    【PreparedStatement与Statement的区别】 PreparedStatement是Statement的子接口,主要区别在于: 1. 预编译:PreparedStatement的SQL语句在执行前会预编译,提高了执行效率,特别是对于重复执行的SQL。 2. 参数化:...

    JDBC学习手册 共两套

    三、PreparedStatement与Statement PreparedStatement是Statement的子接口,它允许预编译SQL语句,提高了执行效率并防止SQL注入。使用占位符(?)替代动态值,然后通过设置参数来填充这些占位符。 四、事务管理 ...

    JDBC1.zip_zip

    PreparedStatement与Statement** Statement适用于静态SQL语句,而PreparedStatement适用于预编译的SQL语句,可以防止SQL注入,提高执行效率。预编译的SQL可以通过设置占位符(?)并用`setXXX()`方法传入参数。 **...

    第十一章JDBC编程.rar

    四、PreparedStatement与Statement PreparedStatement是预编译的SQL语句,它可以提高性能,防止SQL注入,并允许参数化查询。相比Statement,PreparedStatement更安全,更适合频繁重复执行的SQL语句。 五、事务处理 ...

    java面试精选72题

    2. JDBC的PreparedStatement与Statement的对比。PreparedStatement是Statement的扩展,相比于Statement,PreparedStatement在执行前先进行SQL语句的预编译,能够提高执行效率,尤其是在执行复杂或重复的SQL语句时。 ...

    PreparedStatement接口

    NULL 博文链接:https://chaoyi.iteye.com/blog/2088080

    Jdbc相关知识点归档.rar

    3. PreparedStatement与Statement的区别: - PreparedStatement支持预编译,提高性能,防止SQL注入。 - 支持参数占位符,便于多次执行相同SQL,只需更改参数值。 4. CallableStatement用于调用存储过程: - 使用...

    JDBC.biji.rar

    【PreparedStatement与Statement】 PreparedStatement是Statement的子类,预编译SQL语句,提供更好的性能和安全性。它允许在SQL语句中使用占位符,然后用`setXXX()`方法设置参数值,避免了SQL注入风险。 ...

    Java语言SQL接口 JDBC编程技术

    4. **PreparedStatement与Statement** - Statement用于执行静态SQL,而PreparedStatement支持预编译的SQL,提高性能并防止SQL注入。 - PreparedStatement允许在SQL语句中使用占位符,通过设置参数值来动态地改变...

    java面试题-基础(1).doc

    1.9 PreparedStatement与Statement PreparedStatement预编译SQL语句,提高执行效率,减少SQL注入风险。对于多次执行相同SQL的情况,PreparedStatement优于Statement。 前端知识 2.1 前端理解与JQuery用法 前端开发...

    JDBC基础教程

    PreparedStatement与Statement - **Statement**:适用于简单的静态SQL,易受SQL注入攻击。 - **PreparedStatement**:预编译SQL,提升性能,防止SQL注入,支持参数绑定。 ### 5. ResultSet ResultSet对象代表...

    jdbc基础------jdbc

    PreparedStatement与Statement** Statement用于执行静态SQL,而PreparedStatement则用于执行预编译的SQL,它可以防止SQL注入,并提供更好的性能,特别是当SQL语句需要多次执行时。 **6. 数据库连接配置** 在连接...

    Jsp和Servlet试题带(答案).pdf

    2. **PreparedStatement与Statement的区别**: - Statement用于执行静态SQL语句,不支持预编译,易受SQL注入攻击。 - PreparedStatement支持预编译的SQL语句,能有效防止SQL注入,执行效率更高,适合多次执行相同...

Global site tag (gtag.js) - Google Analytics