Module java.sql
Package java.sql

Interface PreparedStatement

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

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

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

注意: 用于设置 IN 参数值的 setter 方法(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
参见:
  • Method Details

    • executeQuery

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

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

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

      注意: 必须指定参数的 SQL 类型。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      void setAsciiStream(int parameterIndex, InputStream x, int length) throws SQLException
      将指定的参数设置为给定的输入流,该输入流将具有指定的字节数。当将非常大的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 SQLException
      Deprecated.
      Use 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 SQLException
      将指定的参数设置为给定的输入流,该输入流将具有指定的字节数。当将非常大的二进制值输入到LONGVARBINARY参数时,通过java.io.InputStream对象发送可能更实际。数据将根据需要从流中读取,直到达到文件结尾。

      注意:此流对象可以是标准Java流对象,也可以是实现标准接口的自定义子类。

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

      void clearParameters() throws SQLException
      立即清除当前参数值。

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

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

      void setObject(int parameterIndex, Object x, int targetSqlType) throws SQLException
      使用给定对象设置指定参数的值。此方法类似于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 SQLException

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

      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 SQLException
      在此PreparedStatement对象中执行SQL语句,该语句可以是任何类型的SQL语句。一些预编译语句返回多个结果;execute方法处理这些复杂语句以及executeQueryexecuteUpdate方法处理的更简单形式的语句。

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

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

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

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

      注意:此流对象可以是标准Java流对象,也可以是实现标准接口的自定义子类。

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

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

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

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

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

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

      由于PreparedStatement对象是预编译的,因此可以在不执行它的情况下了解它将返回的ResultSet对象。因此,可以在PreparedStatement对象上调用方法getMetaData,而不必等待执行它,然后在返回的ResultSet对象上调用ResultSet.getMetaData方法。

      注意: 对于某些驱动程序来说,使用此方法可能会很昂贵,因为缺乏底层DBMS支持。

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

      void setDate(int parameterIndex, Date x, Calendar cal) throws SQLException
      使用给定的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 SQLException
      使用给定的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 SQLException
      使用给定的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 SQLException
      将指定的参数设置为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 SQLException
      将指定的参数设置为给定的java.net.URL值。驱动程序在将其发送到数据库时将其转换为SQL DATALINK值。
      参数:
      parameterIndex - 第一个参数为1,第二个为2,...
      x - 要设置的java.net.URL对象
      抛出:
      SQLException - 如果parameterIndex与SQL语句中的参数标记不对应;如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
      SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
      自版本:
      1.4
    • getParameterMetaData

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

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

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

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

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

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

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

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

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

      void setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength) throws SQLException

      使用给定对象设置指定参数的值。如果第二个参数是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语句中的参数标记;如果发生数据库访问错误;在关闭的PreparedStatement上调用此方法;或者如果x指定的Java对象是InputStream或Reader对象且scale参数的值小于零
      SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持指定的targetSqlType
      参见:
    • setAsciiStream

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

      注意: 此流对象可以是标准的Java流对象,也可以是实现标准接口的自定义子类。

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

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

      注意: 此流对象可以是标准的Java流对象,也可以是实现标准接口的自定义子类。

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

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

      注意: 此流对象可以是标准的Java流对象,也可以是实现标准接口的自定义子类。

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

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

      注意: 此流对象可以是标准的Java流对象,也可以是实现标准接口的自定义子类。

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

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

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

      注意: 此流对象可以是标准的Java流对象,也可以是实现标准接口的自定义子类。

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

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

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

      注意: 此流对象可以是标准的Java流对象,也可以是实现标准接口的自定义子类。

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

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

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

      注意: 此流对象可以是标准的Java流对象,也可以是实现标准接口的自定义子类。

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

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

      void setClob(int parameterIndex, Reader reader) throws SQLException
      将指定的参数设置为Reader对象。此方法与setCharacterStream (int, Reader)方法不同,因为它通知驱动程序应将参数值作为CLOB发送到服务器。当使用setCharacterStream方法时,驱动程序可能需要额外工作来确定参数数据应作为LONGVARCHAR还是CLOB发送到服务器

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

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

      void setBlob(int parameterIndex, InputStream inputStream) throws SQLException
      将指定的参数设置为InputStream对象。此方法与setBinaryStream (int, InputStream)方法不同,因为它通知驱动程序参数值应该作为BLOB发送到服务器。当使用setBinaryStream方法时,驱动程序可能需要额外的工作来确定参数数据应该作为LONGVARBINARY还是BLOB发送到服务器

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

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

      void setNClob(int parameterIndex, Reader reader) throws SQLException
      将指定的参数设置为Reader对象。此方法与setCharacterStream (int, Reader)方法不同,因为它通知驱动程序参数值应该作为NCLOB发送到服务器。当使用setCharacterStream方法时,驱动程序可能需要额外的工作来确定参数数据应该作为LONGNVARCHAR还是NCLOB发送到服务器

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

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

      default void setObject(int parameterIndex, Object x, SQLType targetSqlType, int scaleOrLength) throws SQLException

      使用给定对象设置指定参数的值。如果第二个参数是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版本起:
      1.8
      参见:
    • setObject

      default void setObject(int parameterIndex, Object x, SQLType targetSqlType) throws SQLException
      使用给定对象设置指定参数的值。此方法类似于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版本起:
      1.8
      参见:
    • executeLargeUpdate

      default long executeLargeUpdate() throws SQLException
      在此PreparedStatement对象中执行SQL语句,该语句必须是SQL数据操作语言(DML)语句,如INSERTUPDATEDELETE;或者返回空值的SQL语句,如DDL语句。

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

      默认实现将抛出UnsupportedOperationException

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