模块  java.sql
软件包  java.sql

Interface PreparedStatement

  • All Superinterfaces:
    AutoCloseableStatementWrapper
    All Known Subinterfaces:
    CallableStatement

    public interface PreparedStatementextends 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到数据库char格式的任何必要转换。

        注意:此流对象可以是标准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到数据库char格式的任何必要转换。 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
        另请参见:
        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上调用此方法
        从以下版本开始:
        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到数据库char格式的任何必要转换。

        注意:此流对象可以是标准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对象而不必执行它。 因此,可以在PreparedStatement对象上调用方法getMetaData ,而不是等待执行它,然后在返回的ResultSet对象上调用ResultSet.getMetaData方法。

        注意:由于缺乏基础DBMS支持,对于某些驱动程序使用此方法可能会很昂贵。

        结果
        ResultSet对象列的描述或 null如果驱动程序无法返回 ResultSetMetaData对象
        异常
        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类型的null参数。 如果参数没有用户定义或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
        另请参见:
        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对象。 阅读器必须包含由length指定的字符数,否则在执行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必须包含由length指定的字符数,否则在执行SQLException将生成PreparedStatement 此方法与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 SQLException
        将指定参数设置为Reader对象。 阅读器必须包含由length指定的字符数,否则在执行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准备语句时,驱动程序将生成SQLException

        在发送到数据库之前,给定的Java对象将转换为给定的targetSqlType。 如果对象具有自定义映射(是实现接口SQLData的类),则JDBC驱动程序应调用方法SQLData.writeSQL将其写入SQL数据流。 如果,在另一方面,对象是实现一类的RefBlobClobNClobStructjava.net.URL ,或Array ,驾驶员应把它传递给数据库作为相应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
        另请参见:
        Types
      • setAsciiStream

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

        注意:此流对象可以是标准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到数据库char格式的任何必要转换。

        注意:此流对象可以是标准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到数据库char格式的任何必要转换。

        注意:此流对象可以是标准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到数据库char格式的任何必要转换。

        注意:此流对象可以是标准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准备语句时,驱动程序将生成SQLException

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