java.sql

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

public interface PreparedStatement
     
extends Statement

表示预编译的 SQL 语句的对象。

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

注:用于设置 IN 参数值的设置方法(setShortsetString 等等)必须指定与输入参数的已定义 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)
 

另请参见:
Connection.prepareStatement(java.lang.String), ResultSet

字段摘要
 
从接口 java.sql.Statement 继承的字段
CLOSE_ALL_RESULTS, CLOSE_CURRENT_RESULT, EXECUTE_FAILED, KEEP_CURRENT_RESULT, NO_GENERATED_KEYS, RETURN_GENERATED_KEYS, SUCCESS_NO_INFO
 
方法摘要
 void addBatch()
          将一组参数添加到此 PreparedStatement 对象的批处理命令中。
 void clearParameters()
          立即清除当前参数值。
 boolean execute()
          在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。
 ResultSet executeQuery()
          在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。
 int executeUpdate()
          在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如 INSERTUPDATEDELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。
 ResultSetMetaData getMetaData()
          获取包含有关 ResultSet 对象列信息的 ResultSetMetaData 对象,ResultSet 对象将在执行此 PreparedStatement 对象时返回。
 ParameterMetaData getParameterMetaData()
          获取此 PreparedStatement 对象的参数的编号、类型和属性。
 void setArray(int parameterIndex, Array x)
          将指定参数设置为给定 java.sql.Array 对象。
 void setAsciiStream(int parameterIndex, InputStream x)
          将指定参数设置为给定输入流。
 void setAsciiStream(int parameterIndex, InputStream x, int length)
          将指定参数设置为给定输入流,该输入流将具有给定字节数。
 void setAsciiStream(int parameterIndex, InputStream x, long length)
          将指定参数设置为给定输入流,该输入流将具有指定字节数。
 void setBigDecimal(int parameterIndex, BigDecimal x)
          将指定参数设置为给定 java.math.BigDecimal 值。
 void setBinaryStream(int parameterIndex, InputStream x)
          将指定参数设置为给定输入流。
 void setBinaryStream(int parameterIndex, InputStream x, int length)
          将指定参数设置为给定输入流,该输入流将具有给定字节数。
 void setBinaryStream(int parameterIndex, InputStream x, long length)
          将指定参数设置为给定输入流,该输入流将具有指定字节数。
 void setBlob(int parameterIndex, Blob x)
          将指定参数设置为给定 java.sql.Blob 对象。
 void setBlob(int parameterIndex, InputStream inputStream)
          将指定参数设置为 InputStream 对象。
 void setBlob(int parameterIndex, InputStream inputStream, long length)
          将指定参数设置为 InputStream 对象。
 void setBoolean(int parameterIndex, boolean x)
          将指定参数设置为给定 Java boolean 值。
 void setByte(int parameterIndex, byte x)
          将指定参数设置为给定 Java byte 值。
 void setBytes(int parameterIndex, byte[] x)
          将指定参数设置为给定 Java byte 数组。
 void setCharacterStream(int parameterIndex, Reader reader)
          将指定参数设置为给定 Reader 对象。
 void setCharacterStream(int parameterIndex, Reader reader, int length)
          将给定参数设置为给定 Reader 对象,该对象具有给定字符数长度。
 void setCharacterStream(int parameterIndex, Reader reader, long length)
          将指定参数设置为给定 Reader 对象,该对象具有给定字符数长度。
 void setClob(int parameterIndex, Clob x)
          将指定参数设置为给定 java.sql.Clob 对象。
 void setClob(int parameterIndex, Reader reader)
          将指定参数设置为 Reader 对象。
 void setClob(int parameterIndex, Reader reader, long length)
          将指定参数设置为 Reader 对象。
 void setDate(int parameterIndex, Date x)
          使用运行应用程序的虚拟机的默认时区将指定参数设置为给定 java.sql.Date 值。
 void setDate(int parameterIndex, Date x, Calendar cal)
          使用给定的 Calendar 对象将指定参数设置为给定 java.sql.Date 值。
 void setDouble(int parameterIndex, double x)
          将指定参数设置为给定 Java double 值。
 void setFloat(int parameterIndex, float x)
          将指定参数设置为给定 Java REAL 值。
 void setInt(int parameterIndex, int x)
          将指定参数设置为给定 Java int 值。
 void setLong(int parameterIndex, long x)
          将指定参数设置为给定 Java long 值。
 void setNCharacterStream(int parameterIndex, Reader value)
          将指定参数设置为 Reader 对象。
 void setNCharacterStream(int parameterIndex, Reader value, long length)
          将指定参数设置为 Reader 对象。
 void setNClob(int parameterIndex, NClob value)
          将指定参数设置为 java.sql.NClob 对象。
 void setNClob(int parameterIndex, Reader reader)
          将指定参数设置为 Reader 对象。
 void setNClob(int parameterIndex, Reader reader, long length)
          将指定参数设置为 Reader 对象。
 void setNString(int parameterIndex, String value)
          将指定参数设置为给定 String 对象。
 void setNull(int parameterIndex, int sqlType)
          将指定参数设置为 SQL NULL
 void setNull(int parameterIndex, int sqlType, String typeName)
          将指定参数设置为 SQL NULL
 void setObject(int parameterIndex, Object x)
          使用给定对象设置指定参数的值。
 void setObject(int parameterIndex, Object x, int targetSqlType)
          使用给定对象设置指定参数的值。
 void setObject(int parameterIndex, Object x, int targetSqlType, int scaleOrLength)
          使用给定对象设置指定参数的值。
 void setRef(int parameterIndex, Ref x)
          将指定参数设置为给定 REF(<structured-type>) 值。
 void setRowId(int parameterIndex, RowId x)
          将指定参数设置为给定 java.sql.RowId 对象。
 void setShort(int parameterIndex, short x)
          将指定参数设置为给定 Java short 值。
 void setSQLXML(int parameterIndex, SQLXML xmlObject)
          将指定参数设置为给定 java.sql.SQLXML 对象。
 void setString(int parameterIndex, String x)
          将指定参数设置为给定 Java String 值。
 void setTime(int parameterIndex, Time x)
          将指定参数设置为给定 java.sql.Time 值。
 void setTime(int parameterIndex, Time x, Calendar cal)
          使用给定的 Calendar 对象将指定参数设置为给定 java.sql.Time 值。
 void setTimestamp(int parameterIndex, Timestamp x)
          将指定参数设置为给定 java.sql.Timestamp 值。
 void setTimestamp(int parameterIndex, Timestamp x, Calendar cal)
          使用给定的 Calendar 对象将指定参数设置为给定 java.sql.Timestamp 值。
 void setUnicodeStream(int parameterIndex, InputStream x, int length)
          已过时。  
 void setURL(int parameterIndex, URL x)
          将指定参数设置为给定 java.net.URL 值。
 
从接口 java.sql.Statement 继承的方法
addBatch, cancel, clearBatch, clearWarnings, close, execute, execute, execute, execute, executeBatch, executeQuery, executeUpdate, executeUpdate, executeUpdate, executeUpdate, getConnection, getFetchDirection, getFetchSize, getGeneratedKeys, getMaxFieldSize, getMaxRows, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getUpdateCount, getWarnings, isClosed, isPoolable, setCursorName, setEscapeProcessing, setFetchDirection, setFetchSize, setMaxFieldSize, setMaxRows, setPoolable, setQueryTimeout
 
从接口 java.sql.Wrapper 继承的方法
isWrapperFor, unwrap
 

方法详细信息

executeQuery

ResultSet executeQuery()
                       throws SQLException
在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。

返回:
包含该查询生成的数据的 ResultSet 对象;不会返回 null
抛出:
SQLException - 如果发生数据库访问错误,在关闭的 PreparedStatement 上调用此方法,或者 SQL 语句没有返回 ResultSet 对象

executeUpdate

int executeUpdate()
                  throws SQLException
在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL 数据操作语言(Data Manipulation Language,DML)语句,比如 INSERTUPDATEDELETE 语句;或者是无返回内容的 SQL 语句,比如 DDL 语句。

返回:
(1) SQL 数据操作语言 (DML) 语句的行数 (2) 对于无返回内容的 SQL 语句,返回 0
抛出:
SQLException - 如果发生数据库访问错误,在关闭的 PreparedStatement 上调用此方法,或者 SQL 语句返回一个 ResultSet 对象

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 REAL 值。在将此值发送到数据库时,驱动程序将它转换成一个 SQL FLOAT 值。

参数:
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 byte 数组。在将此值发送给数据库时,驱动程序将它转换成一个 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

void setUnicodeStream(int parameterIndex,
                      InputStream x,
                      int length)
                      throws SQLException
已过时。 

将指定参数设置为给定输入流,该输入流将具有给定字节数。在将一个非常大的 Unicode 值输入到 LONGVARCHAR 参数时,通过 java.io.InputStream 对象发送它可能更为实际。将根据需要从流中读取数据,一直读取到文件末尾。JDBC 驱动程序将执行从 Unicode 到数据库 char 格式的任何必要转换。根据 Java 虚拟机规范中的定义,Unicode 流的字节格式必须是 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
使用给定对象设置指定参数的值。除了假定 scale 为 0,此方法类似于上面的 setObject 方法。

参数:
parameterIndex - 第一个参数是 1,第二个参数是 2,……
x - 包含输入参数值的对象
targetSqlType - 将发送给数据库的 SQL 类型(定义于 java.sql.Types 中)
抛出:

JDK 1.6 中文手册