模块 java.sql
 java.sql

接口 PreparedStatement

所有父级接口:
AutoCloseable , Statement , Wrapper
所有已知的子接口:
CallableStatement

public interface PreparedStatement extends Statement
表示预编译 SQL 语句的对象。

SQL 语句被预编译并存储在 PreparedStatement 对象中。然后可以使用该对象多次有效地执行该语句。

笔记:用于设置 IN 参数值的设置方法(setShortsetString 等)必须指定与输入参数的已定义 SQL 类型兼容的类型。例如,如果 IN 参数具有 SQL 类型 INTEGER,则应使用方法 setInt

如果需要任意参数类型转换,方法 setObject 应该与目标 SQL 类型一起使用。

在下面设置参数的例子中,con代表一个活跃的连接:


  BigDecimal sal = new BigDecimal("153833.00");
  PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
                   SET SALARY = ? WHERE ID = ?");
  pstmt.setBigDecimal(1, sal);
  pstmt.setInt(2, 110592);
  
自从:
1.1
参见:
  • 方法详情

    • executeQuery

      ResultSet  executeQuery() throws SQL异常
      在此 PreparedStatement 对象中执行 SQL 查询并返回查询生成的 ResultSet 对象。
      返回:
      包含查询产生的数据的 ResultSet 对象;从不null
      抛出:
      SQLException - 如果发生数据库访问错误;在关闭的 PreparedStatement 上调用此方法或 SQL 语句不返回 ResultSet 对象
      SQLTimeoutException - 当驱动程序确定已超过 setQueryTimeout 方法指定的超时值并且至少尝试取消当前正在运行的 Statement
    • executeUpdate

      int executeUpdate() throws SQL异常
      执行此 PreparedStatement 对象中的 SQL 语句,该语句必须是 SQL 数据操作语言 (DML) 语句,例如 INSERTUPDATEDELETE ;或不返回任何内容的 SQL 语句,例如 DDL 语句。
      返回:
      (1) SQL 数据操作语言 (DML) 语句的行计数或 (2) 0 用于不返回任何内容的 SQL 语句
      抛出:
      SQLException - 如果发生数据库访问错误;在关闭的 PreparedStatement 上调用此方法或 SQL 语句返回 ResultSet 对象
      SQLTimeoutException - 当驱动程序确定已超过 setQueryTimeout 方法指定的超时值并且至少尝试取消当前正在运行的 Statement
    • setNull

      void setNull(int parameterIndex, int sqlType) throws SQL异常
      将指定参数设置为 SQL NULL

      笔记:您必须指定参数的 SQL 类型。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      sqlType - java.sql.Types 中定义的 SQL 类型代码
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 sqlTypeARRAYBLOBCLOBDATALINKJAVA_OBJECTNCHARNCLOBNVARCHARLONGNVARCHAR , REF , ROWID , SQLXMLSTRUCT 数据类型并且 JDBC 驱动程序不支持此数据类型
    • setBoolean

      void setBoolean(int parameterIndex, boolean x) throws SQL异常
      将指定参数设置为给定的 Java boolean 值。驱动程序将它发送到数据库时将其转换为 SQL BITBOOLEAN 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • setByte

      void setByte(int parameterIndex, byte x) throws SQL异常
      将指定参数设置为给定的 Java byte 值。驱动程序将其发送到数据库时将其转换为 SQL TINYINT 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • setShort

      void setShort(int parameterIndex, short x) throws SQL异常
      将指定参数设置为给定的 Java short 值。驱动程序将它发送到数据库时将其转换为 SQL SMALLINT 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • setInt

      void setInt(int parameterIndex, int x) throws SQL异常
      将指定参数设置为给定的 Java int 值。驱动程序将它发送到数据库时将其转换为 SQL INTEGER 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • setLong

      void setLong(int parameterIndex, long x) throws SQL异常
      将指定参数设置为给定的 Java long 值。驱动程序将它发送到数据库时将其转换为 SQL BIGINT 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • setFloat

      void setFloat(int parameterIndex, float x) throws SQL异常
      将指定参数设置为给定的 Java float 值。驱动程序将其发送到数据库时将其转换为 SQL REAL 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • setDouble

      void setDouble(int parameterIndex, double x) throws SQL异常
      将指定参数设置为给定的 Java double 值。驱动程序将它发送到数据库时将其转换为 SQL DOUBLE 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • setBigDecimal

      void setBigDecimal(int parameterIndex, BigDecimal  x) throws SQL异常
      将指定参数设置为给定的 java.math.BigDecimal 值。驱动程序将它发送到数据库时将其转换为 SQL NUMERIC 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • setString

      void setString(int parameterIndex, String  x) throws SQL异常
      将指定参数设置为给定的 Java String 值。驱动程序将它发送到数据库时将其转换为 SQL VARCHARLONGVARCHAR 值(取决于参数的大小相对于驱动程序对 VARCHAR 值的限制)。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • setBytes

      void setBytes(int parameterIndex, byte[] x) throws SQL异常
      将指定参数设置为给定的 Java 字节数组。驱动程序将它发送到数据库时将其转换为 SQL VARBINARYLONGVARBINARY(取决于参数的大小相对于驱动程序对 VARBINARY 值的限制)。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • setDate

      void setDate(int parameterIndex, Date  x) throws SQL异常
      使用运行应用程序的虚拟机的默认时区将指定参数设置为给定的 java.sql.Date 值。驱动程序将它发送到数据库时将其转换为 SQL DATE 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • setTime

      void setTime(int parameterIndex, Time  x) throws SQL异常
      将指定参数设置为给定的 java.sql.Time 值。驱动程序将它发送到数据库时将其转换为 SQL TIME 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • setTimestamp

      void setTimestamp(int parameterIndex, Timestamp  x) throws SQL异常
      将指定参数设置为给定的 java.sql.Timestamp 值。驱动程序将它发送到数据库时将其转换为 SQL TIMESTAMP 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • setAsciiStream

      void setAsciiStream(int parameterIndex, InputStream  x, int length) throws SQL异常
      将指定参数设置为给定的输入流,它将具有指定的字节数。当一个非常大的 ASCII 值输入到 LONGVARCHAR 参数时,通过 java.io.InputStream 发送它可能更实用。数据将根据需要从流中读取,直到到达文件末尾。 JDBC 驱动程序将执行从 ASCII 到数据库字符格式的任何必要转换。

      笔记:此流对象可以是标准 Java 流对象,也可以是您自己实现标准接口的子类。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 包含 ASCII 参数值的 Java 输入流
      length - 流中的字节数
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • setUnicodeStream

      @Deprecated (since ="1.2") void setUnicodeStream(int parameterIndex, InputStream  x, int length) throws SQL异常
      已弃用。
      使用setCharacterStream
      将指定参数设置为给定的输入流,它将具有指定的字节数。当一个非常大的 Unicode 值输入到 LONGVARCHAR 参数时,通过 java.io.InputStream 对象发送它可能更实用。数据将根据需要从流中读取,直到到达文件末尾。 JDBC 驱动程序将执行从 Unicode 到数据库字符格式的任何必要转换。 Unicode 流的字节格式必须是 Java UTF-8,如 Java 虚拟机规范中所定义。

      笔记:此流对象可以是标准 Java 流对象,也可以是您自己实现标准接口的子类。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 包含 Unicode 参数值的 java.io.InputStream 对象
      length - 流中的字节数
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
    • setBinaryStream

      void setBinaryStream(int parameterIndex, InputStream  x, int length) throws SQL异常
      将指定参数设置为给定的输入流,它将具有指定的字节数。当一个非常大的二进制值被输入到 LONGVARBINARY 参数时,通过 java.io.InputStream 对象发送它可能更实用。数据将根据需要从流中读取,直到到达文件末尾。

      笔记:此流对象可以是标准 Java 流对象,也可以是您自己实现标准接口的子类。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 包含二进制参数值的 java 输入流
      length - 流中的字节数
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
    • clearParameters

      void clearParameters() throws SQL异常
      立即清除当前参数值。

      通常,参数值对语句的重复使用保持有效。设置参数值会自动清除其先前的值。然而,在某些情况下,立即释放当前参数值使用的资源是有用的;这可以通过调用方法 clearParameters 来完成。

      抛出:
      SQLException - 如果发生数据库访问错误或在关闭的 PreparedStatement 上调用此方法
    • setObject

      void setObject(int parameterIndex, Object  x, int targetSqlType) throws SQL异常
      使用给定对象设置指定参数的值。此方法类似于 setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength) ,不同之处在于它假定比例为零。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 包含输入参数值的对象
      targetSqlType - 要发送到数据库的 SQL 类型(在 java.sql.Types 中定义)
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的 PreparedStatement 上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持指定的 targetSqlType
      参见:
    • setObject

      void setObject(int parameterIndex, Object  x) throws SQL异常

      使用给定对象设置指定参数的值。

      JDBC 规范指定了从 Java Object 类型到 SQL 类型的标准映射。给定的参数将在发送到数据库之前转换为相应的 SQL 类型。

      请注意,此方法可用于通过使用特定于驱动程序的 Java 类型来传递特定于数据库的抽象数据类型。如果对象属于实现接口 SQLData 的类,则 JDBC 驱动程序应调用方法 SQLData.writeSQL 将其写入 SQL 数据流。另一方面,如果对象属于实现 RefBlobClobNClobStructjava.net.URLRowIdSQLXMLArray 的类,则驱动程序应将其传递给数据库作为相应 SQL 类型的值。

      笔记:并非所有数据库都允许将非类型化 Null 发送到后端。为了获得最大的可移植性,应使用 setNullsetObject(int parameterIndex, Object x, int sqlType) 方法而不是 setObject(int parameterIndex, Object x)

      笔记:如果存在歧义,例如,如果对象属于实现多个上述接口的类,则此方法会抛出异常。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 包含输入参数值的对象
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误;此方法在关闭的 PreparedStatement 上调用或给定对象的类型不明确
    • execute

      boolean execute() throws SQL异常
      执行这个PreparedStatement对象中的SQL语句,可以是任何一种SQL语句。一些准备好的语句返回多个结果; execute 方法处理这些复杂语句以及由方法 executeQueryexecuteUpdate 处理的更简单形式的语句。

      execute 方法返回一个 boolean 来表示第一个结果的形式。您必须调用方法 getResultSetgetUpdateCount 来检索结果;您必须调用 getMoreResults 才能移动到任何后续结果。

      返回:
      true 如果第一个结果是 ResultSet 对象; false 如果第一个结果是更新计数或者没有结果
      抛出:
      SQLException - 如果发生数据库访问错误;在关闭的 PreparedStatement 上调用此方法或向此方法提供参数
      SQLTimeoutException - 当驱动程序确定已超过 setQueryTimeout 方法指定的超时值并且至少尝试取消当前正在运行的 Statement
      参见:
    • addBatch

      void addBatch() throws SQL异常
      向此 PreparedStatement 对象的命令批次添加一组参数。
      抛出:
      SQLException - 如果发生数据库访问错误或在关闭的 PreparedStatement 上调用此方法
      自从:
      1.2
      参见:
    • setCharacterStream

      void setCharacterStream(int parameterIndex, Reader  reader, int length) throws SQL异常
      将指定参数设置为给定的 Reader 对象,它是给定的字符长度。当一个非常大的 UNICODE 值输入到 LONGVARCHAR 参数时,通过 java.io.Reader 对象发送它可能更实用。数据将根据需要从流中读取,直到到达文件末尾。 JDBC 驱动程序将执行从 UNICODE 到数据库字符格式的任何必要转换。

      笔记:此流对象可以是标准 Java 流对象,也可以是您自己实现标准接口的子类。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      reader - 包含 Unicode 数据的 java.io.Reader 对象
      length - 流中的字符数
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      自从:
      1.2
    • setRef

      void setRef(int parameterIndex, Ref  x) throws SQL异常
      将指定参数设置为给定的 REF(<structured-type>) 值。驱动程序将其发送到数据库时将其转换为 SQL REF 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - SQL REF
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.2
    • setBlob

      void setBlob(int parameterIndex, Blob  x) throws SQL异常
      将指定参数设置为给定的 java.sql.Blob 对象。驱动程序将它发送到数据库时将其转换为 SQL BLOB 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 映射 SQL BLOB 值的 Blob 对象
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.2
    • setClob

      void setClob(int parameterIndex, Clob  x) throws SQL异常
      将指定参数设置为给定的 java.sql.Clob 对象。驱动程序将它发送到数据库时将其转换为 SQL CLOB 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 映射 SQL CLOB 值的 Clob 对象
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.2
    • setArray

      void setArray(int parameterIndex, Array  x) throws SQL异常
      将指定参数设置为给定的 java.sql.Array 对象。驱动程序将它发送到数据库时将其转换为 SQL ARRAY 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 映射 SQL ARRAY 值的 Array 对象
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.2
    • getMetaData

      ResultSetMetaData  getMetaData() throws SQL异常
      检索一个 ResultSetMetaData 对象,其中包含有关执行此 PreparedStatement 对象时将返回的 ResultSet 对象的列的信息。

      因为 PreparedStatement 对象是预编译的,所以无需执行它就可以知道它将返回的 ResultSet 对象。因此,可以在 PreparedStatement 对象上调用方法 getMetaData 而不是等待执行它然后在返回的 ResultSet 对象上调用 ResultSet.getMetaData 方法。

      NOTE:由于缺乏底层 DBMS 支持,使用此方法对于某些驱动程序来说可能代价高昂。

      返回:
      ResultSet 对象列的描述或 null 如果驱动程序无法返回 ResultSetMetaData 对象
      抛出:
      SQLException - 如果发生数据库访问错误或在关闭的 PreparedStatement 上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.2
    • setDate

      void setDate(int parameterIndex, Date  x, Calendar  cal) throws SQL异常
      使用给定的 Calendar 对象将指定参数设置为给定的 java.sql.Date 值。驱动程序使用 Calendar 对象构造 SQL DATE 值,然后驱动程序将其发送到数据库。使用 Calendar 对象,驱动程序可以在考虑自定义时区的情况下计算日期。如果未指定 Calendar 对象,则驱动程序使用默认时区,即运行应用程序的虚拟机的时区。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      cal - 驱动程序将用于构建日期的 Calendar 对象
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      自从:
      1.2
    • setTime

      void setTime(int parameterIndex, Time  x, Calendar  cal) throws SQL异常
      使用给定的 Calendar 对象将指定参数设置为给定的 java.sql.Time 值。驱动程序使用 Calendar 对象构造 SQL TIME 值,然后驱动程序将其发送到数据库。使用 Calendar 对象,驱动程序可以在考虑自定义时区的情况下计算时间。如果未指定 Calendar 对象,则驱动程序使用默认时区,即运行应用程序的虚拟机的时区。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      cal - 驱动程序将用于构建时间的 Calendar 对象
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      自从:
      1.2
    • setTimestamp

      void setTimestamp(int parameterIndex, Timestamp  x, Calendar  cal) throws SQL异常
      使用给定的 Calendar 对象将指定参数设置为给定的 java.sql.Timestamp 值。驱动程序使用 Calendar 对象构造 SQL TIMESTAMP 值,然后驱动程序将其发送到数据库。使用 Calendar 对象,驱动程序可以在考虑自定义时区的情况下计算时间戳。如果未指定 Calendar 对象,则驱动程序使用默认时区,即运行应用程序的虚拟机的时区。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      cal - 驱动程序将用于构建时间戳的 Calendar 对象
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      自从:
      1.2
    • setNull

      void setNull(int parameterIndex, int sqlType, String  typeName) throws SQL异常
      将指定参数设置为 SQL NULL。此版本的方法 setNull 应该用于用户定义类型和 REF 类型参数。用户定义类型的示例包括:STRUCT、DISTINCT、JAVA_OBJECT 和命名数组类型。

      笔记:为了便于移植,应用程序在指定 NULL 用户定义参数或 REF 参数时必须提供 SQL 类型代码和完全限定的 SQL 类型名称。在用户定义类型的情况下,名称是参数本身的类型名称。对于 REF 参数,名称是引用类型的类型名称。如果 JDBC 驱动程序不需要类型代码或类型名称信息,它可能会忽略它。尽管它适用于用户定义参数和 Ref 参数,但此方法可用于设置任何 JDBC 类型的空参数。如果参数没有用户定义或 REF 类型,则忽略给定的 typeName。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      sqlType - 来自 java.sql.Types 的值
      typeName - SQL 用户定义类型的完全限定名称;如果参数不是用户定义类型或 REF,则忽略
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 sqlTypeARRAYBLOBCLOBDATALINKJAVA_OBJECTNCHARNCLOBNVARCHARLONGNVARCHARREFROWIDSQLXMLSTRUCT 数据类型并且 JDBC 驱动程序不支持此数据类型,或者如果 JDBC 驱动程序不支持支持这个方法
      自从:
      1.2
    • setURL

      void setURL(int parameterIndex, URL  x) throws SQL异常
      将指定参数设置为给定的 java.net.URL 值。驱动程序将它发送到数据库时将其转换为 SQL DATALINK 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 要设置的 java.net.URL 对象
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.4
    • getParameterMetaData

      ParameterMetaData  getParameterMetaData() throws SQL异常
      检索此 PreparedStatement 对象参数的数量、类型和属性。
      返回:
      一个 ParameterMetaData 对象,其中包含有关此 PreparedStatement 对象的每个参数标记的数量、类型和属性的信息
      抛出:
      SQLException - 如果发生数据库访问错误或在关闭的 PreparedStatement 上调用此方法
      自从:
      1.4
      参见:
    • setRowId

      void setRowId(int parameterIndex, RowId  x) throws SQL异常
      将指定参数设置为给定的 java.sql.RowId 对象。驱动程序将其发送到数据库时将其转换为 SQL ROWID
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setNString

      void setNString(int parameterIndex, String  value) throws SQL异常
      将指定参数设置为给定的 String 对象。驱动程序将它发送到数据库时将其转换为 SQL NCHARNVARCHARLONGNVARCHAR 值(取决于参数的大小相对于驱动程序对 NVARCHAR 值的限制)。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      value - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果驱动程序不支持国家字符集;如果驱动程序可以检测到可能发生数据转换错误;如果发生数据库访问错误;或者在关闭的 PreparedStatement 上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setNCharacterStream

      void setNCharacterStream(int parameterIndex, Reader  value, long length) throws SQL异常
      将指定参数设置为 Reader 对象。 Reader 读取数据直到到达文件末尾。驱动程序执行从 Java 字符格式到数据库中国家字符集的必要转换。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      value - 参数值
      length - 参数数据中的字符数。
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果驱动程序不支持国家字符集;如果驱动程序可以检测到可能发生数据转换错误;如果发生数据库访问错误;或者在关闭的 PreparedStatement 上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setNClob

      void setNClob(int parameterIndex, NClob  value) throws SQL异常
      将指定参数设置为 java.sql.NClob 对象。驱动程序将它发送到数据库时将其转换为 SQL NCLOB 值。
      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      value - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果驱动程序不支持国家字符集;如果驱动程序可以检测到可能发生数据转换错误;如果发生数据库访问错误;或者在关闭的 PreparedStatement 上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setClob

      void setClob(int parameterIndex, Reader  reader, long length) throws SQL异常
      将指定参数设置为 Reader 对象。读取器必须包含长度指定的字符数,否则在执行 PreparedStatement 时将生成 SQLException。此方法不同于 setCharacterStream (int, Reader, int) 方法,因为它通知驱动程序参数值应作为 CLOB 发送到服务。当使用 setCharacterStream 方法时,驱动程序可能必须做额外的工作来确定参数数据是否应该作为 LONGVARCHARCLOB 发送到服务
      参数:
      parameterIndex - 第一个参数的索引是 1,第二个是 2,...
      reader - 包含要将参数值设置到的数据的对象。
      length - 参数数据中的字符数。
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误;此方法在关闭的 PreparedStatement 上调用,或者如果指定的长度小于零。
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setBlob

      void setBlob(int parameterIndex, InputStream  inputStream, long length) throws SQL异常
      将指定参数设置为 InputStream 对象。 Inputstream 必须包含长度指定的字符数,否则在执行 PreparedStatement 时将生成 SQLException。此方法不同于 setBinaryStream (int, InputStream, int) 方法,因为它通知驱动程序参数值应作为 BLOB 发送到服务。当使用 setBinaryStream 方法时,驱动程序可能必须做额外的工作来确定参数数据是否应该作为 LONGVARBINARYBLOB 发送到服务
      参数:
      parameterIndex - 第一个参数的索引是 1,第二个是 2,...
      inputStream - 包含要将参数值设置到的数据的对象。
      length - 参数数据中的字节数。
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误;此方法在关闭的 PreparedStatement 上调用;如果指定的长度小于零或 InputStream 中的字节数与指定的长度不匹配。
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setNClob

      void setNClob(int parameterIndex, Reader  reader, long length) throws SQL异常
      将指定参数设置为 Reader 对象。读取器必须包含长度指定的字符数,否则在执行 PreparedStatement 时将生成 SQLException。此方法不同于 setCharacterStream (int, Reader, int) 方法,因为它通知驱动程序参数值应作为 NCLOB 发送到服务。当使用 setCharacterStream 方法时,驱动程序可能必须做额外的工作来确定参数数据是否应该作为 LONGNVARCHARNCLOB 发送到服务
      参数:
      parameterIndex - 第一个参数的索引是 1,第二个是 2,...
      reader - 包含要将参数值设置到的数据的对象。
      length - 参数数据中的字符数。
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果指定的长度小于零;如果驱动程序不支持国家字符集;如果驱动程序可以检测到可能发生数据转换错误;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setSQLXML

      void setSQLXML(int parameterIndex, SQLXML  xmlObject) throws SQL异常
      将指定参数设置为给定的 java.sql.SQLXML 对象。驱动程序将其发送到数据库时将其转换为 SQL XML 值。
      参数:
      parameterIndex - 第一个参数的索引是 1,第二个是 2,...
      xmlObject - 映射 SQL XML 值的 SQLXML 对象
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误;此方法在关闭的 PreparedStatementjava.xml.transform.ResultWriterOutputStream 尚未为 SQLXML 对象关闭时调用
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setObject

      void setObject(int parameterIndex, Object  x, int targetSqlType, int scaleOrLength) throws SQL异常

      使用给定对象设置指定参数的值。如果第二个参数是 InputStream,则流必须包含由 scaleOrLength 指定的字节数。如果第二个参数是 Reader,那么读取器必须包含由 scaleOrLength 指定的字符数。如果这些条件不成立,驱动程序将在执行准备好的语句时生成SQLException

      在发送到数据库之前,给定的 Java 对象将转换为给定的 targetSqlType。如果对象具有自定义映射(属于实现接口 SQLData 的类),JDBC 驱动程序应调用方法 SQLData.writeSQL 将其写入 SQL 数据流。另一方面,如果对象属于实现 RefBlobClobNClobStructjava.net.URLArray 的类,则驱动程序应将其作为相应 SQL 类型的值传递给数据库。

      请注意,此方法可用于传递特定于数据库的抽象数据类型。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 包含输入参数值的对象
      targetSqlType - 要发送到数据库的 SQL 类型(在 java.sql.Types 中定义)。 scale 参数可以进一步限定这种类型。
      scaleOrLength - 对于 java.sql.Types.DECIMALjava.sql.Types.NUMERIC types ,这是小数点后的位数。对于 Java 对象类型 InputStreamReader ,这是流或读取器中数据的长度。对于所有其他类型,此值将被忽略。
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误;如果 x 指定的 Java 对象是 InputStream 或 Reader 对象并且 scale 参数的值小于零,则调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持指定的 targetSqlType
      参见:
    • setAsciiStream

      void setAsciiStream(int parameterIndex, InputStream  x, long length) throws SQL异常
      将指定参数设置为给定的输入流,它将具有指定的字节数。当一个非常大的 ASCII 值输入到 LONGVARCHAR 参数时,通过 java.io.InputStream 发送它可能更实用。数据将根据需要从流中读取,直到到达文件末尾。 JDBC 驱动程序将执行从 ASCII 到数据库字符格式的任何必要转换。

      笔记:此流对象可以是标准 Java 流对象,也可以是您自己实现标准接口的子类。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 包含 ASCII 参数值的 Java 输入流
      length - 流中的字节数
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      自从:
      1.6
    • setBinaryStream

      void setBinaryStream(int parameterIndex, InputStream  x, long length) throws SQL异常
      将指定参数设置为给定的输入流,它将具有指定的字节数。当一个非常大的二进制值被输入到 LONGVARBINARY 参数时,通过 java.io.InputStream 对象发送它可能更实用。数据将根据需要从流中读取,直到到达文件末尾。

      笔记:此流对象可以是标准 Java 流对象,也可以是您自己实现标准接口的子类。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 包含二进制参数值的 java 输入流
      length - 流中的字节数
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      自从:
      1.6
    • setCharacterStream

      void setCharacterStream(int parameterIndex, Reader  reader, long length) throws SQL异常
      将指定参数设置为给定的 Reader 对象,它是给定的字符长度。当一个非常大的 UNICODE 值输入到 LONGVARCHAR 参数时,通过 java.io.Reader 对象发送它可能更实用。数据将根据需要从流中读取,直到到达文件末尾。 JDBC 驱动程序将执行从 UNICODE 到数据库字符格式的任何必要转换。

      笔记:此流对象可以是标准 Java 流对象,也可以是您自己实现标准接口的子类。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      reader - 包含 Unicode 数据的 java.io.Reader 对象
      length - 流中的字符数
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      自从:
      1.6
    • setAsciiStream

      void setAsciiStream(int parameterIndex, InputStream  x) throws SQL异常
      将指定参数设置为给定的输入流。当一个非常大的 ASCII 值输入到 LONGVARCHAR 参数时,通过 java.io.InputStream 发送它可能更实用。数据将根据需要从流中读取,直到到达文件末尾。 JDBC 驱动程序将执行从 ASCII 到数据库字符格式的任何必要转换。

      笔记:此流对象可以是标准 Java 流对象,也可以是您自己实现标准接口的子类。

      笔记:请查阅您的 JDBC 驱动程序文档以确定使用带长度参数的 setAsciiStream 版本是否更有效。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 包含 ASCII 参数值的 Java 输入流
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setBinaryStream

      void setBinaryStream(int parameterIndex, InputStream  x) throws SQL异常
      将指定参数设置为给定的输入流。当一个非常大的二进制值被输入到 LONGVARBINARY 参数时,通过 java.io.InputStream 对象发送它可能更实用。数据将根据需要从流中读取,直到到达文件末尾。

      笔记:此流对象可以是标准 Java 流对象,也可以是您自己实现标准接口的子类。

      笔记:请查阅您的 JDBC 驱动程序文档以确定使用带长度参数的 setBinaryStream 版本是否更有效。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 包含二进制参数值的 java 输入流
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setCharacterStream

      void setCharacterStream(int parameterIndex, Reader  reader) throws SQL异常
      将指定参数设置为给定的 Reader 对象。当一个非常大的 UNICODE 值输入到 LONGVARCHAR 参数时,通过 java.io.Reader 对象发送它可能更实用。数据将根据需要从流中读取,直到到达文件末尾。 JDBC 驱动程序将执行从 UNICODE 到数据库字符格式的任何必要转换。

      笔记:此流对象可以是标准 Java 流对象,也可以是您自己实现标准接口的子类。

      笔记:请查阅您的 JDBC 驱动程序文档以确定使用带有长度参数的 setCharacterStream 版本是否更有效。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      reader - 包含 Unicode 数据的 java.io.Reader 对象
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setNCharacterStream

      void setNCharacterStream(int parameterIndex, Reader  value) throws SQL异常
      将指定参数设置为 Reader 对象。 Reader 读取数据直到到达文件末尾。驱动程序执行从 Java 字符格式到数据库中国家字符集的必要转换。

      笔记:此流对象可以是标准 Java 流对象,也可以是您自己实现标准接口的子类。

      笔记:请查阅您的 JDBC 驱动程序文档以确定使用带长度参数的 setNCharacterStream 版本是否更有效。

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      value - 参数值
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果驱动程序不支持国家字符集;如果驱动程序可以检测到可能发生数据转换错误;如果发生数据库访问错误;或者在关闭的 PreparedStatement 上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setClob

      void setClob(int parameterIndex, Reader  reader) throws SQL异常
      将指定参数设置为 Reader 对象。此方法不同于 setCharacterStream (int, Reader) 方法,因为它通知驱动程序参数值应作为 CLOB 发送到服务。当使用 setCharacterStream 方法时,驱动程序可能必须做额外的工作来确定参数数据是否应该作为 LONGVARCHARCLOB 发送到服务

      笔记:请查阅您的 JDBC 驱动程序文档以确定使用带长度参数的 setClob 版本是否更有效。

      参数:
      parameterIndex - 第一个参数的索引是 1,第二个是 2,...
      reader - 包含要将参数值设置到的数据的对象。
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误;在关闭的 PreparedStatement 上调用此方法,或者如果 parameterIndex 不对应于 SQL 语句中的参数标记
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setBlob

      void setBlob(int parameterIndex, InputStream  inputStream) throws SQL异常
      将指定参数设置为 InputStream 对象。此方法不同于 setBinaryStream (int, InputStream) 方法,因为它通知驱动程序参数值应作为 BLOB 发送到服务。当使用 setBinaryStream 方法时,驱动程序可能必须做额外的工作来确定参数数据是否应该作为 LONGVARBINARYBLOB 发送到服务

      笔记:请查阅您的 JDBC 驱动程序文档以确定使用带长度参数的 setBlob 版本是否更有效。

      参数:
      parameterIndex - 第一个参数的索引是 1,第二个是 2,...
      inputStream - 包含要将参数值设置到的数据的对象。
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误;此方法在关闭的 PreparedStatement 上调用,或者如果 parameterIndex 不对应于 SQL 语句中的参数标记,
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setNClob

      void setNClob(int parameterIndex, Reader  reader) throws SQL异常
      将指定参数设置为 Reader 对象。此方法不同于 setCharacterStream (int, Reader) 方法,因为它通知驱动程序参数值应作为 NCLOB 发送到服务。当使用 setCharacterStream 方法时,驱动程序可能必须做额外的工作来确定参数数据是否应该作为 LONGNVARCHARNCLOB 发送到服务

      笔记:请查阅您的 JDBC 驱动程序文档以确定使用带长度参数的 setNClob 版本是否更有效。

      参数:
      parameterIndex - 第一个参数的索引是 1,第二个是 2,...
      reader - 包含要将参数值设置到的数据的对象。
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果驱动程序不支持国家字符集;如果驱动程序可以检测到可能发生数据转换错误;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持此方法
      自从:
      1.6
    • setObject

      default void setObject(int parameterIndex, Object  x, SQLType  targetSqlType, int scaleOrLength) throws SQL异常

      使用给定对象设置指定参数的值。如果第二个参数是 InputStream,则流必须包含由 scaleOrLength 指定的字节数。如果第二个参数是 Reader,那么读取器必须包含由 scaleOrLength 指定的字符数。如果这些条件不成立,驱动程序将在执行准备好的语句时生成SQLException

      在发送到数据库之前,给定的 Java 对象将转换为给定的 targetSqlType。如果对象具有自定义映射(属于实现接口 SQLData 的类),JDBC 驱动程序应调用方法 SQLData.writeSQL 将其写入 SQL 数据流。另一方面,如果对象属于实现 RefBlobClobNClobStructjava.net.URLArray 的类,则驱动程序应将其作为相应 SQL 类型的值传递给数据库。

      请注意,此方法可用于传递特定于数据库的抽象数据类型。

      默认实现会抛出 SQLFeatureNotSupportedException

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 包含输入参数值的对象
      targetSqlType - 要发送到数据库的 SQL 类型。 scale 参数可以进一步限定这种类型。
      scaleOrLength - 对于 java.sql.JDBCType.DECIMALjava.sql.JDBCType.NUMERIC types ,这是小数点后的位数。对于 Java 对象类型 InputStreamReader ,这是流或读取器中数据的长度。对于所有其他类型,此值将被忽略。
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的 PreparedStatement 上调用此方法,或者如果 x 指定的 Java 对象是 InputStream 或 Reader 对象并且 scale 参数的值小于零
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持指定的 targetSqlType
      自从:
      1.8
      参见:
    • setObject

      default void setObject(int parameterIndex, Object  x, SQLType  targetSqlType) throws SQL异常
      使用给定对象设置指定参数的值。此方法类似于 setObject(int parameterIndex, Object x, SQLType targetSqlType, int scaleOrLength) ,只是它假定比例为零。

      默认实现会抛出 SQLFeatureNotSupportedException

      参数:
      parameterIndex - 第一个参数是 1,第二个是 2,...
      x - 包含输入参数值的对象
      targetSqlType - 要发送到数据库的 SQL 类型
      抛出:
      SQLException - 如果 parameterIndex 不对应于 SQL 语句中的参数标记;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果 JDBC 驱动程序不支持指定的 targetSqlType
      自从:
      1.8
      参见:
    • executeLargeUpdate

      default long executeLargeUpdate() throws SQL异常
      执行此 PreparedStatement 对象中的 SQL 语句,该语句必须是 SQL 数据操作语言 (DML) 语句,例如 INSERTUPDATEDELETE ;或不返回任何内容的 SQL 语句,例如 DDL 语句。

      当返回的行数可能超过 Integer.MAX_VALUE 时,应使用此方法。

      默认实现会抛出 UnsupportedOperationException

      返回:
      (1) SQL 数据操作语言 (DML) 语句的行计数或 (2) 0 用于不返回任何内容的 SQL 语句
      抛出:
      SQLException - 如果发生数据库访问错误;在关闭的 PreparedStatement 上调用此方法或 SQL 语句返回 ResultSet 对象
      SQLTimeoutException - 当驱动程序确定已超过 setQueryTimeout 方法指定的超时值并且至少尝试取消当前正在运行的 Statement
      自从:
      1.8