先看如下代码:
PreparedStatement pstmt = conn.prepareStatement(sql);
//执行查询
pstmt.executeQuery(sql);
//执行更新
pstmt.executeUpdate(sql);
使用上面的代码在不同数据库中分别出现错误如下:
(1)Oracle
执行查询:ORA-03115: unsupported network datatype or representation
执行更新:ORA-01008: not all variables bound
(2)MySQL
MySQL Exception:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1
(3)SQLServer
SQLServer 2000 Exception: [Microsoft][SQLServer 2000 Driver for JDBC]Invalid call Statement method: {0}
原因:PreparedStatement在创建时已经缓存了sql语句,以便后面设置参数,所以你在执行查询或更新时在附加sql语句,像这样:pstmt.executeQuery(sql),就不会设置参数,导致报错!
分享到:
相关推荐
本文将详细介绍`PreparedStatement`的使用方法,主要面向Java服务器页面(JSP)的初学者。 #### 二、准备工作 为了能够使用`PreparedStatement`,首先需要确保已经安装了MySQL数据库,并且在项目中引入了MySQL ...
在Java编程语言中,使用`PreparedStatement`来执行SQL语句是一种常见的操作数据库的方式。这种方式不仅可以提高程序的性能,还可以有效地防止SQL注入攻击。当我们在应用程序中需要向数据库中插入日期(`Date`类型)...
这可以提高数据访问的效率,但是需要注意尽量使用问号的方式传递参数。 其次,在 JDBC 应用中,使用 PreparedStatement 可以提高代码的可读性和可维护性。使用 PreparedStatement 可以使代码变得更加简洁和易于维护...
在使用连接池和`PreparedStatement`时,需要注意以下几点: - **合理配置缓存大小**:根据应用的实际情况调整连接池的`PreparedStatement Cache`大小,过小可能导致频繁的预编译,过大则可能浪费内存。 - **避免过度...
这篇文章将详细介绍PreparedStatement对象在JSP中操作数据库的使用方法,包括创建对象、传递参数、以及确保参数数据类型一致性等关键知识点。 首先,PreparedStatement实例可以包含预编译的SQL语句,这意味着SQL...
加数据到数据库 * @param member 要添加的成员对象 * @return 是否成功添加 * @throws Exception 数据库操作...在使用时,注意遵循最佳实践,如使用try-with-resources语句来自动关闭资源,以及正确处理可能的异常。
- 注意:避免在PreparedStatement中使用硬编码的值,这样可能导致预编译失效,且安全性较低。 6. 数据库性能优化: - 编写高效的SQL语句,充分利用索引来提升查询速度。 - 左连接时,使用小结果集以减少数据库...
在执行SQL命令时,我们有二种选择:可以使用PreparedStatement对象,也可以使用Statement对象。无论多少次地使用同一个SQL命令,PreparedStatement都只对它解析和编译一次。当使用Statement对象时,每次执行一个...
Statement 对象、利用 helper 函数对动态 SQL 命令进行格式化、利用 PreparedStatement 对象提高数据库的总体效率、在成批处理重复的插入或更新操作中使用 PreparedStatement 对象等技巧,能够使我们更好地发挥系统...
在 Java 操作 Oracle 数据库时,我们可以通过使用 Thin 驱动程序、关闭自动提交功能、使用 Statement 对象、利用 helper 函数对动态 SQL 命令进行格式化、使用 PreparedStatement 对象提高数据库的总体效率、在成批...
Java 连接数据库需要使用 java.sql 包中的类,例如 Connection、Statement、PreparedStatement、ResultSet 等。因此,需要在 Java 程序中导入这些类库。 2. 加载数据库驱动 不同的数据库管理系统需要使用不同的...
需要注意的是,虽然PreparedStatement提供了性能和安全上的优势,但是它的使用也会带来一定的资源开销。PreparedStatement对象的创建和预编译过程比Statement更为复杂和耗时。因此,在那些对性能要求极高且SQL语句...
需要注意的是,我们使用了CreatePool类来获取数据库连接,该类是一个数据库连接池实现。这种方法可以提高数据库连接的效率和性能。 在valueUnbound方法中,我们没有任何实现,因为我们不需要在对象解绑时执行任何...
3. **执行SQL语句**:使用`Statement`或`PreparedStatement`对象来执行SQL查询。`Statement`适用于静态SQL,而`PreparedStatement`则适用于包含占位符的动态SQL,它更安全,能防止SQL注入攻击。 4. **处理结果集**...
在本实验中,我们将学习如何使用 JDBC 在 JSP 中实现数据库的查询、增加、...注意:在实验中,我们使用了一个名为“student”的数据库,表名为“student1”,其中包含了学号、姓名、年龄、性别、联系地址、电话等字段。
在实际开发中,为了提高效率和安全性,我们通常会使用PreparedStatement接口来代替Statement接口。 1. **PreparedStatement简介** PreparedStatement是Statement的一个子接口,它的主要优势在于预编译。预编译的...
注意,为了防止SQL注入和提高效率,建议使用预编译的`PreparedStatement`,并通过设置参数值来代替直接在SQL语句中插入动态数据。 总的来说,微软的JDBC Driver在连接Azure SQL Database时提供了更可靠、更高效的...
### 抓取网页数据的代码及PreparedStatement的使用详解 #### 一、抓取网页数据的基本概念 抓取网页数据通常指的是使用编程手段自动地从互联网上的网页中提取所需的信息。这种技术广泛应用于搜索引擎、数据分析、...
因此,在 Servlet 中使用 JDBC 访问数据库时,需要遵循最佳实践,例如使用连接池、PreparedStatement、参数化查询等,以确保应用程序的安全性和性能。 在 Servlet 中使用 JDBC 访问数据库是一种非常常见的应用场景...