网上有很多文章讨论PrepardStatement与Statement的区别,不过要完完全全的作出比较难度很大,因为每个数据库对底层的实现及应用场合不一样,Oracle对PrepardStatement的支持最好,Mysql对PrepardStatement支持最差。Statement执行单个sql语句速度较快而PrepardStatement执行批处理的效率较高。
以Oracle为例
1、Statement为每一条Sql语句生成执行计划, 如果要执行两条sql语句
select colume from table where colume=1;
select colume from table where colume=2;
会生成两个执行计划,一千个查询就生成一千个执行计划。而生成计划是非常消耗资源的
2、PreparedStatement用于使用绑定变量重用执行计划
select * from xxx.sometable t where t.id=?;
通过set方法给sql语句按占位符"?"先后顺序赋值,只需要生成一个执行计划,可以重复使用。
当处理批量SQL语句时,这个时候就可以体现PrepareStatement的优势,由于采用Cache机制,则预先编译的语句,就会放在Cache中,下次执行相同SQL语句时,则可以直接从Cache中取出来,效率要比statement高好几倍
PrepardStatement的优点
<1>、用PrepardStatement写成的sql语句,容易阅读,维护方便。
<2>、批处理效率高,执行速度快。
<3>、安全,可以防止sql注入攻击。
缺点:当执行批处理时,你无法得知这个批处理总共影响了多少行。
分享到:
相关推荐
通过深入探讨`Statement`的创建、使用方法以及与之相关的其他类(如`PreparedStatement`和`CallableStatement`)的区别,帮助读者更好地理解如何在Java程序中执行SQL命令。 ### Java数据库连接中的Statement #### ...
这份“java学习过程中一点总结带实例程序”涵盖了Java编程的多个核心领域,为初学者提供了全面的学习指导,通过实际编程案例,有助于加深对理论知识的理解。对于想快速入门Java的朋友,这是一个很好的起点。
本文档总结了 Java WEB 面试题,涵盖了 JDBC 操作数据库流程、PreparedStatement 的使用、关系数据库中连接池的机制、HTTP 协议中长连接和短连接的区别、HTTP/1.1 和 HTTP/1.0 的区别等方面。 一、JDBC 操作数据库...
标题 "分别使用JDBC、SQL Developer访问Oracle的一点区别" 提到的是两种不同的方式与Oracle数据库进行交互,即Java的JDBC(Java Database Connectivity)和SQL Developer,这是一款Oracle公司提供的数据库管理工具。...
在完成所有数据库操作之后,非常重要的一点是关闭所有的资源,包括 `ResultSet`, `Statement` 和 `Connection`。这通常通过调用 `close()` 方法来实现,并且最好将这些关闭操作放在 `finally` 块中确保即使发生异常...
JDBC提供`Statement`对象的`executeBatch()`方法来实现这一点。首先,我们需要创建一个Statement对象,然后使用`addBatch()`方法添加多条SQL删除语句到批处理队列,最后调用`executeBatch()`执行所有操作。例如: `...
- 如果是 jdbc 的话,使用 PreparedStatement 不使用 Statement,来创建 SQL,PreparedStatement 的性能比 Statement 的速度要快,使用 PreparedStatement 对象 SQL 语句会预编译在此对象中,PreparedStatement ...
既然不能做到过目不忘,索性把看到的记下来,做笔记的好处就是下次碰到问题时直接查看经过自己总结的笔记有事半功倍的效果,因此也养成了学习一点就记一点的习惯。以前喜欢用Evernote来记录,现在用GitHub。 ####...
在JSP页面中,可以使用Statement或PreparedStatement对象执行SQL语句。PreparedStatement是更安全、更高效的选择,因为它支持预编译,能防止SQL注入攻击,并且允许参数化查询。例如,当需要根据用户输入查询数据库时...
使用 `PreparedStatement` 而非 `Statement` 可以有效防止此类攻击,因为它允许预编译SQL语句,从而可以自动转义特殊字符。 10. **事务管理** 如果涉及到多个数据库操作,比如同时更新用户信息和房间状态,可以...
它提供了一套API,包括DriverManager、Connection、Statement、PreparedStatement、ResultSet等类,使得Java程序员能够以统一的方式访问各种数据库。JDBC驱动程序分为四类:JDBC-ODBC桥、本地API驱动、网络纯Java...
然后,使用`Connection`对象建立连接,`Statement`或`PreparedStatement`对象执行SQL查询,获取`ResultSet`对象,它包含了查询结果。 在获取到`ResultSet`后,我们可以创建一个Excel文件并填充数据。Java中没有内置...
总结来说,Java通过`java.sql`包中的`Connection`、`PreparedStatement`和`Statement`接口提供与MySQL数据库的交互。对于有结果的查询,使用`PreparedStatement`的`executeQuery()`;对于无结果的操作,使用`...
Action类中封装了SQL语句,通过Connection、Statement或PreparedStatement对象执行SQL,获取结果集后,再由模型层(Business Layer)处理,最后将数据传递给视图层展示。 五、安全性与优化 为了提高系统的安全性,...
通过以上总结,我们可以看到JAVA Web开发涉及的知识点非常广泛,从基础的HTML/CSS到高级的数据库操作和网络通信,每一点都至关重要。对于求职者来说,熟练掌握这些知识点将大大增加成功的几率。
在成功建立连接后,接下来的步骤是通过`Statement`或`PreparedStatement`对象执行SQL查询或更新。 ##### 3.1 创建`Statement`对象 ```java Statement stmt = con.createStatement(); ``` ##### 3.2 执行SQL查询 ...
例如,创建新记录需要调用Statement或PreparedStatement的executeUpdate()方法;读取数据则使用executeQuery()方法获取ResultSet;更新和删除操作类似,需要匹配相应的SQL语句并执行。 模糊查询商品通常是通过在SQL...
5. 执行SQL:使用`Connection`对象创建`Statement`或`PreparedStatement`,然后执行SQL查询、更新等操作。 6. 处理结果:对于查询操作,可以获取`ResultSet`对象并遍历其中的数据。 7. 关闭资源:在完成数据库操作...
例如,对于JDBC,可以使用`Statement`或`PreparedStatement`的`setFetchSize()`方法来指定一次从数据库获取的记录数量,实现类似分页的效果。 总结起来,这个案例涵盖了数据库元数据的获取,这对于理解和调试应用...