java - 预编译 JDBC PreparedStatement 有什么作用?

标签 java jdbc prepared-statement

“预编译”语句有什么作用,因为我已经看到了 如果我用错误的 SQL 语法编写编译不报告的准备好的语句 任何问题!

那么,如果预编译准备好的语句不检查语法有效性,它到底做了什么?

最佳答案

创建 PreparedStatements 可能涉及也可能不涉及 SQL 语法验证甚至数据库服务器往返,这完全取决于所使用的 JDBC 驱动程序。有些司机会进行往返或验证,有些则不会。

因此在某些 JDBC 驱动程序上,PreparedStatement 并不比普通的 Statement 更“准备”。 (换句话说:对于某些 JDBC 驱动程序,PreparedStatement 表示服务器端资源(类似于 Connection),而在其他驱动程序中,它是纯客户端构造)。

然而,一个重要的区别是 PreparedStatement 将帮助您以一种保证避免在尝试插入值时可能遇到的任何转义或格式问题的方式处理动态参数值手动输入 SQL 语句字符串并使用普通的 语句 执行它。

该功能独立于是否预先“准备”语句的选择,因此每个 JDBC 驱动程序都提供了它,即使它不执行任何其他准备步骤也是如此。

关于java - 预编译 JDBC PreparedStatement 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5497297/

相关文章:

java - 如何使用 Java 8 和 Open-JDK 设置自定义 DNS 服务器?

com.mysql.jdbc.Field 聚合类的 Java 粘性实例

java - 随机化数据库行结果

java - 如何在 Java SE 项目中使用 InitialContext 数据库信息

PHP - 将 PDO 与 IN 子句数组一起使用

java - 在 Vert.x 路由器中设置超时 "globally"(适用于所有操作)

java - Spring MVC默认身份验证如何添加用户/注册

php - 奇怪的准备语句错误

php - 我尝试实现 UPSERT 时遇到的问题

java - GWT:SDK 是否完全支持 Java?