Module  java.sql
软件包  java.sql

Interface PreparedStatement

  • All Superinterfaces:
    AutoCloseableStatementWrapper
    All Known Subinterfaces:
    CallableStatement


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

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

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

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

    在以下设置参数的示例中, con表示活动连接:

      PreparedStatement pstmt = con.prepareStatement("UPDATE EMPLOYEES
                                         SET SALARY = ? WHERE ID = ?");
       pstmt.setBigDecimal(1, 153833.00)
       pstmt.setInt(2, 110592) 
    从以下版本开始:
    1.1
    另请参见:
    Connection.prepareStatement(java.lang.String)ResultSet
    • 方法详细信息

      • executeQuery

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

        int executeUpdate​()
                   throws SQLException
        执行在该SQL语句PreparedStatement对象,它必须是一个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 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
        已过时。 使用setCharacterStream
        将指定的参数设置为给定的输入流,它将具有指定的字节数。 当一个非常大的Unicode值输入到LONGVARCHAR参数时,通过java.io.InputStream对象发送它可能更实用。 数据将从流中读取,直到达到文件结尾。 JDBC驱动程序将从Unicode到数据库字符格式进行任何必要的转换。 Unicode流的字节格式必须是Java虚拟机规范中定义的Java UTF-8。

        注意:此流对象可以是标准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
        另请参见:
        Types
      • 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
        另请参见:
        Statement.execute(java.lang.String)Statement.getResultSet()Statement.getUpdateCount()Statement.getMoreResults()
      • addBatch

        void addBatch​()
               throws SQLException
        向这个 PreparedStatement对象的一批命令添加一组参数。
        异常
        SQLException - 如果发生数据库访问错误或者在关闭的 PreparedStatement调用此方法 PreparedStatement
        从以下版本开始:
        1.2
        另请参见:
        Statement.addBatch(java.lang.String)
      • 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
      • 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
      • setBlob

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

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

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

        注意:由于缺少底层DBMS支持,因此对某些驱动程序而言,使用此方法可能是昂贵的。

        结果
        ResultSet对象的列或 null的描述,如果驱动程序不能返回一个 ResultSetMetaData对象
        异常
        SQLException - 如果发生数据库访问错误或在关闭的 PreparedStatement调用此方法 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驱动程序不需要类型代码或类型名称信息,它可能会忽略它。 尽管它是用于用户定义的和参数的参数,但是该方法可以用于设置任何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调用此方法 PreparedStatement
        从以下版本开始:
        1.4
        另请参见:
        ParameterMetaData
      • 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
      • 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
      • 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
      • 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
      • setClob

        void setClob​(int parameterIndex,
                     Reader reader,
                     long length)
              throws SQLException
        将指定的参数设置为Reader对象。 读者必须包含由长度指定的字符数,否则在执行SQLException会产生PreparedStatement 该方法与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 SQLException
        将指定的参数设置为InputStream对象。 Inputstream必须包含由长度指定的字符数,否则在执行SQLException将生成PreparedStatement 该方法与setBinaryStream (int, InputStream, int)方法不同,因为它通知驱动程序参数值应作为BLOB发送到服务器。 当使用setBinaryStream方法时,驱动程序可能需要进行额外的工作才能确定是否应将参数数据作为LONGVARBINARYBLOB发送到服务器
        参数
        parameterIndex - 第一个参数的索引为1,第二个为2,...
        inputStream - 包含将参数值设置为的数据的对象。
        length - 参数数据中的字节数。
        异常
        SQLException - 如果parameterIndex不对应于SQL语句中的参数标记; 如果发生数据库访问错误; 这个方法是在封闭的PreparedStatementPreparedStatement ; 如果指定的长度小于零,或者InputStream中的字节数与指定长度不匹配。
        SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
        从以下版本开始:
        1.6
      • setNClob

        void setNClob​(int parameterIndex,
                      Reader reader,
                      long length)
               throws SQLException
        将指定的参数设置为Reader对象。 读者必须包含由长度指定的字符数,否则当执行SQLException将生成PreparedStatement 该方法与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 SQLException
        将指定的参数设置为给定的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 SQLException

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

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

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

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

        void setAsciiStream​(int parameterIndex,
                            InputStream x,
                            long length)
                     throws SQLException
        将指定的参数设置为给定的输入流,它将具有指定的字节数。 当输入非常大的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 SQLException
        将指定的参数设置为给定的输入流,它将具有指定的字节数。 当一个非常大的二进制值输入到一个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 SQLException
        将指定的参数设置为给定的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 SQLException
        将指定的参数设置为给定的输入流。 当一个非常大的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 SQLException
        将指定的参数设置为给定的输入流。 当一个非常大的二进制值输入到一个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 SQLException
        将指定的参数设置为给定的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 SQLException
        将指定的参数设置为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 SQLException
        将指定的参数设置为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 SQLException
        将指定的参数设置为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 SQLException
        将指定的参数设置为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 SQLException

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

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

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

        默认实现将抛出SQLFeatureNotSupportedException

        参数
        parameterIndex - 第一个参数是1,第二个是2,...
        x - 包含输入参数值的对象
        targetSqlType - 要发送到数据库的SQL类型。 比例参数可能进一步限定此类型。
        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
        另请参见:
        JDBCTypeSQLType
      • executeLargeUpdate

        default long executeLargeUpdate​()
                                 throws SQLException
        执行在该SQL语句PreparedStatement对象,它必须是一个SQL数据操纵语言(DML)语句,比如INSERTUPDATEDELETE ; 或不返回任何内容的SQL语句,例如DDL语句。

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

        默认实现将抛出UnsupportedOperationException

        结果
        (1)SQL数据操作语言(DML)语句的行计数或(2)0不返回的SQL语句
        异常
        SQLException - 如果发生数据库访问错误; 此方法在关闭的PreparedStatement上调用,或者SQL语句返回一个ResultSet对象
        SQLTimeoutException - 当驱动程序确定已经超过 setQueryTimeout方法指定的超时值,并且至少尝试取消当前正在运行的 Statement
        从以下版本开始:
        1.8