public interface PreparedStatement extends Statement
SQL语句已预编译并存储在PreparedStatement对象中。 然后可以使用该对象多次有效地执行此语句。
注意:setter方法( setShort , setString用于设置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)
CLOSE_ALL_RESULTS, CLOSE_CURRENT_RESULT, EXECUTE_FAILED, KEEP_CURRENT_RESULT, NO_GENERATED_KEYS, RETURN_GENERATED_KEYS, SUCCESS_NO_INFO| Modifier and Type | Method and Description |
|---|---|
void |
addBatch()
向这个
PreparedStatement对象的一批命令添加一组参数。
|
void |
clearParameters()
立即清除当前参数值。
|
boolean |
execute()
执行此
PreparedStatement对象中的SQL语句,这可能是任何类型的SQL语句。
|
default long |
executeLargeUpdate()
执行在该SQL语句 PreparedStatement对象,它必须是一个SQL数据操纵语言(DML)语句,如INSERT , UPDATE或DELETE ;
或不返回任何内容的SQL语句,例如DDL语句。
|
ResultSet |
executeQuery()
执行此
PreparedStatement对象中的SQL查询,并返回查询
PreparedStatement的
ResultSet对象。
|
int |
executeUpdate()
执行在该SQL语句 PreparedStatement对象,它必须是一个SQL数据操纵语言(DML)语句,如INSERT , UPDATE或DELETE ;
或不返回任何内容的SQL语句,例如DDL语句。
|
ResultSetMetaData |
getMetaData()
检索一个
ResultSetMetaData对象,其中包含有关执行此
PreparedStatement对象时将返回的
ResultSet对象的列的信息。
|
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字节数组。
|
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设置为给定的
java.sql.Date值。
|
void |
setDate(int parameterIndex, Date x, Calendar cal)
使用给定的
Calendar对象将指定的
Calendar设置为给定的
java.sql.Date值。
|
void |
setDouble(int parameterIndex, double x)
将指定的参数设置为给定的Java
double值。
|
void |
setFloat(int parameterIndex, float x)
将指定的参数设置为给定的Java
float值。
|
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)
使用给定对象设置指定参数的值。
|
default void |
setObject(int parameterIndex, Object x, SQLType targetSqlType)
使用给定对象设置指定参数的值。
|
default void |
setObject(int parameterIndex, Object x, SQLType 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对象将指定的
Calendar设置为给定的
java.sql.Time值。
|
void |
setTimestamp(int parameterIndex, Timestamp x)
将指定的参数设置为给定的
java.sql.Timestamp值。
|
void |
setTimestamp(int parameterIndex, Timestamp x, Calendar cal)
使用给定的
Calendar对象将指定的
Calendar设置为给定的
java.sql.Timestamp值。
|
void |
setUnicodeStream(int parameterIndex, InputStream x, int length)
已弃用
使用
setCharacterStream
|
void |
setURL(int parameterIndex, URL x)
将指定的参数设置为给定的
java.net.URL值。
|
addBatch, cancel, clearBatch, clearWarnings, close, closeOnCompletion, execute, execute, execute, execute, executeBatch, executeLargeBatch, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeQuery, executeUpdate, executeUpdate, executeUpdate, executeUpdate, getConnection, getFetchDirection, getFetchSize, getGeneratedKeys, getLargeMaxRows, getLargeUpdateCount, getMaxFieldSize, getMaxRows, getMoreResults, getMoreResults, getQueryTimeout, getResultSet, getResultSetConcurrency, getResultSetHoldability, getResultSetType, getUpdateCount, getWarnings, isClosed, isCloseOnCompletion, isPoolable, setCursorName, setEscapeProcessing, setFetchDirection, setFetchSize, setLargeMaxRows, setMaxFieldSize, setMaxRows, setPoolable, setQueryTimeoutisWrapperFor, unwrapResultSet executeQuery() throws SQLException
PreparedStatement对象中的SQL查询,并返回查询
PreparedStatement的
ResultSet对象。
ResultSet对象;
从不null
SQLException - 如果发生数据库访问错误;
这个方法在一个封闭的PreparedStatement上被调用,或者SQL语句不返回一个ResultSet对象
SQLTimeoutException - 当驱动程序确定已经超过了
setQueryTimeout方法指定的超时值,并且至少尝试取消当前运行的
Statement
int executeUpdate()
throws SQLException
PreparedStatement对象,它必须是一个SQL数据操纵语言(DML)语句,如INSERT , UPDATE或DELETE ;
或不返回任何内容的SQL语句,例如DDL语句。
SQLException - 如果发生数据库访问错误;
这个方法在一个封闭的PreparedStatement上被调用,或者SQL语句返回一个ResultSet对象
SQLTimeoutException - 当驱动程序确定已经超过了
setQueryTimeout方法指定的超时值,并且至少尝试取消当前运行的
Statement
void setNull(int parameterIndex,
int sqlType)
throws SQLException
NULL 。
注意:您必须指定参数的SQL类型。
parameterIndex - 第一个参数是1,第二个是2,...
sqlType -
java.sql.Types定义的SQL类型代码
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
SQLFeatureNotSupportedException -如果
sqlType是
ARRAY ,
BLOB ,
CLOB ,
DATALINK ,
JAVA_OBJECT ,
NCHAR ,
NCLOB ,
NVARCHAR ,
LONGNVARCHAR ,
REF ,
ROWID ,
SQLXML或
STRUCT数据类型和JDBC驱动程序不支持此数据类型
void setBoolean(int parameterIndex,
boolean x)
throws SQLException
boolean值。
当驱动程序将其发送到数据库时,将其转换为SQL BIT或BOOLEAN值。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
SQLException - 如果parameterIndex与SQL语句中的参数标记不对应;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setByte(int parameterIndex,
byte x)
throws SQLException
byte值。
当驱动程序将其发送到数据库时,将其转换为SQL TINYINT值。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setShort(int parameterIndex,
short x)
throws SQLException
short值。
当驱动程序将其发送到数据库时,将其转换为SQL SMALLINT值。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setInt(int parameterIndex,
int x)
throws SQLException
int值。
当驱动程序将其发送到数据库时,将其转换为SQL INTEGER值。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setLong(int parameterIndex,
long x)
throws SQLException
long值。
当驱动程序将其发送到数据库时,将其转换为SQL BIGINT值。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setFloat(int parameterIndex,
float x)
throws SQLException
float值。
当驱动程序将其发送到数据库时,将其转换为SQL REAL值。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setDouble(int parameterIndex,
double x)
throws SQLException
double值。
当驱动程序将其发送到数据库时,将其转换为SQL DOUBLE值。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setBigDecimal(int parameterIndex,
BigDecimal x)
throws SQLException
java.math.BigDecimal值。
当驱动程序将其发送到数据库时,将其转换为SQL NUMERIC值。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setString(int parameterIndex,
String x)
throws SQLException
String值。
驱动程序将其转换为SQL VARCHAR或LONGVARCHAR值(取决于参数相对于VARCHAR值的驱动程序限制的大小),当它发送到数据库时。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在关闭的PreparedStatement上调用此方法
void setBytes(int parameterIndex,
byte[] x)
throws SQLException
VARBINARY或LONGVARBINARY (取决于参数相对于VARBINARY值的驱动程序限制的大小),当它发送到数据库时。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setDate(int parameterIndex,
Date x)
throws SQLException
java.sql.Date设置为给定的java.sql.Date值。
当驱动程序将其发送到数据库时,将其转换为SQL DATE值。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setTime(int parameterIndex,
Time x)
throws SQLException
java.sql.Time值。
当驱动程序将其发送到数据库时,将其转换为SQL TIME值。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setTimestamp(int parameterIndex,
Timestamp x)
throws SQLException
java.sql.Timestamp值。
当驱动程序将其发送到数据库时,将其转换为SQL TIMESTAMP值。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setAsciiStream(int parameterIndex,
InputStream x,
int length)
throws SQLException
LONGVARCHAR参数时,通过java.io.InputStream发送它可能更java.io.InputStream 。
将根据需要从流中读取数据,直到达到文件结尾。
JDBC驱动程序将从ASCII到数据库字符格式进行任何必要的转换。
注意:此流对象可以是标准Java流对象,也可以是实现标准接口的自己的子类。
parameterIndex - 第一个参数是1,第二个是2,...
x - 包含ASCII参数值的Java输入流
length - 流中的字节数
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
@Deprecated void setUnicodeStream(int parameterIndex, InputStream x, int length) throws SQLException
setCharacterStream
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驱动程序不支持此方法
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上调用此方法
void clearParameters()
throws SQLException
一般来说,参数值仍然有效用于重复使用语句。 设置参数值将自动清除其以前的值。 然而,在某些情况下,立即释放当前参数值使用的资源是有用的; 这可以通过调用方法clearParameters 。
SQLException - 如果发生数据库访问错误或此方法在关闭时调用
PreparedStatement
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
void setObject(int parameterIndex,
Object x)
throws SQLException
使用给定对象设置指定参数的值。
JDBC规范规定了从Java Object类型到SQL类型的标准映射。 在发送给数据库之前,给定的参数将被转换为相应的SQL类型。
请注意,此方法可能通过使用特定于驱动程序的Java类型来传递特定于数据库的抽象数据类型。 如果对象是实现接口的类的SQLData ,JDBC驱动程序应该调用方法SQLData.writeSQL将它写入SQL数据流中。 如果,在另一方面,对象是实现一类Ref , Blob , Clob , NClob , Struct , java.net.URL , RowId , SQLXML或Array ,则驱动程序应当将它传递给数据库作为相应SQL类型的值。
注意:并非所有数据库都允许将非类型的Null发送到后端。 为了最大可移植性,应使用setNull或setObject(int parameterIndex, Object x, int sqlType)方法代替setObject(int parameterIndex, Object x) 。
注意:如果存在歧义,则此方法会引发异常,例如,如果对象是实现多个上述接口的类。
parameterIndex - 第一个参数是1,第二个是2,...
x - 包含输入参数值的对象
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误;
这个方法在封闭的PreparedStatement上被调用,或给定对象的类型是不明确的
boolean execute()
throws SQLException
PreparedStatement对象中的SQL语句,可能是任何类型的SQL语句。
一些准备的语句返回多个结果;
execute方法处理这些复杂语句以及由方法executeQuery和executeUpdate处理的更简单的语句形式。
execute方法返回一个boolean以指示第一个结果的形式。 您必须调用方法getResultSet或getUpdateCount来检索结果; 您必须致电getMoreResults才能移动到任何后续结果。
true如果第一个结果是一个ResultSet对象;
false如果第一个结果是更新计数或没有结果
SQLException - 如果发生数据库访问错误;
这个方法是在封闭的PreparedStatement上调用的,或者这个方法提供了一个参数
SQLTimeoutException - 当驱动程序确定已经超过了
setQueryTimeout方法指定的超时值,并且至少尝试取消当前运行的
Statement
Statement.execute(java.lang.String) ,
Statement.getResultSet() ,
Statement.getUpdateCount() ,
Statement.getMoreResults()
void addBatch()
throws SQLException
PreparedStatement对象的一批命令添加一组参数。
SQLException - 如果发生数据库访问错误或此方法在关闭的
PreparedStatement
Statement.addBatch(java.lang.String)
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上调用此方法
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驱动程序不支持此方法
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驱动程序不支持此方法
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驱动程序不支持此方法
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驱动程序不支持此方法
ResultSetMetaData getMetaData() throws SQLException
ResultSetMetaData对象,其中包含有关执行此PreparedStatement对象时将返回的ResultSet对象的列的信息。
由于PreparedStatement对象是预编译的,就可以了解ResultSet对象将返回,而不必执行它。 因此,可以在PreparedStatement对象上调用方法getMetaData ,而不是等待执行它,然后在返回的ResultSet对象上调用ResultSet.getMetaData方法。
注意:由于缺少底层DBMS支持,因此对某些驱动程序而言,使用此方法可能是昂贵的。
ResultSet对象的列的描述或
null如果驱动程序不能返回一个
ResultSetMetaData对象
SQLException - 如果发生数据库访问错误或者在关闭的
PreparedStatement上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
void setDate(int parameterIndex,
Date x,
Calendar cal)
throws SQLException
Calendar对象将指定的Calendar设置为给定的java.sql.Date值。
驱动程序使用Calendar对象来构造一个SQL DATE值,然后驱动程序发送到数据库。
使用Calendar对象,驱动程序可以计算考虑到自定义时区的日期。
如果没有Calendar对象,则驱动程序使用默认时区,即运行应用程序的虚拟机的时区。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
cal - 驱动程序将用于构建日期的
Calendar对象
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setTime(int parameterIndex,
Time x,
Calendar cal)
throws SQLException
Calendar对象将指定的Calendar设置为给定的java.sql.Time值。
驱动程序使用Calendar对象构造一个SQL TIME值,然后驱动程序将其发送到数据库。
使用Calendar对象,驱动程序可以计算考虑到自定义时区的时间。
如果没有Calendar对象,则驱动程序使用默认时区,即运行应用程序的虚拟机的时区。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
cal - 驱动程序将用于构建时间的
Calendar对象
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setTimestamp(int parameterIndex,
Timestamp x,
Calendar cal)
throws SQLException
Calendar对象将指定的Calendar设置为给定的java.sql.Timestamp值。
驱动程序使用Calendar对象来构造一个SQL TIMESTAMP值,然后驱动程序将其发送到数据库。
使用Calendar对象,驱动程序可以计算考虑到自定义时区的时间戳。
如果没有Calendar对象,则驱动程序使用默认时区,即运行应用程序的虚拟机的时区。
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数值
cal -在
Calendar对象的驱动程序将用来构造时间戳
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
void setNull(int parameterIndex,
int sqlType,
String typeName)
throws SQLException
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 -如果
sqlType是
ARRAY ,
BLOB ,
CLOB ,
DATALINK ,
JAVA_OBJECT ,
NCHAR ,
NCLOB ,
NVARCHAR ,
LONGNVARCHAR ,
REF ,
ROWID ,
SQLXML或
STRUCT数据类型和JDBC驱动程序不支持此数据类型,或者JDBC驱动程序不支持这种方法
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驱动程序不支持此方法
ParameterMetaData getParameterMetaData() throws SQLException
PreparedStatement对象的参数的数量,类型和属性。
ParameterMetaData对象,其中包含有关此
PreparedStatement对象的每个参数标记的数量,类型和属性的信息
SQLException - 如果发生数据库访问错误或在关闭的
PreparedStatement上调用此方法
ParameterMetaData
void setRowId(int parameterIndex,
RowId x)
throws SQLException
java.sql.RowId对象。
当驱动程序将其发送到数据库时,将其转换为SQL ROWID值
parameterIndex - 第一个参数是1,第二个是2,...
x - 参数的值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
void setNString(int parameterIndex,
String value)
throws SQLException
String对象。
当驱动程序将其发送到数据库时,将其转换为SQL NCHAR或NVARCHAR或LONGNVARCHAR值(取决于参数相对于驱动程序对NVARCHAR的限制的大小)的大小。
parameterIndex - 第一个参数是1,第二个是2,...
value - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果司机不支持国家字符集;
如果驱动程序可以检测到可能发生数据转换错误;
如果发生数据库访问错误;
或者这个方法在封闭的PreparedStatement
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
void setNCharacterStream(int parameterIndex,
Reader value,
long length)
throws SQLException
Reader对象。
Reader读取数据,直到达到文件结尾。
驱动程序必须从Java字符格式转换为数据库中的国家字符集。
parameterIndex - 第一个参数是1,第二个是2,...
value - 参数值
length - 参数数据中的字符数。
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果司机不支持国家字符集;
如果驱动程序可以检测到可能发生数据转换错误;
如果发生数据库访问错误;
或者这个方法在封闭的PreparedStatement
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
void setNClob(int parameterIndex,
NClob value)
throws SQLException
java.sql.NClob对象。
当驱动程序将其发送到数据库时,将其转换为SQL NCLOB值。
parameterIndex - 第一个参数是1,第二个是2,...
value - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果司机不支持国家字符集;
如果驱动程序可以检测到可能发生数据转换错误;
如果发生数据库访问错误;
或者这种方法在封闭的PreparedStatement
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
void setClob(int parameterIndex,
Reader reader,
long length)
throws SQLException
Reader对象。
读者必须包含由长度指定的SQLException数,否则当执行PreparedStatement时将PreparedStatement 。
该方法与setCharacterStream (int, Reader, int)方法不同,因为它通知驱动程序参数值应作为CLOB发送到服务器。
当使用setCharacterStream方法时,驱动程序可能需要额外的工作才能确定参数数据是否应该作为LONGVARCHAR或CLOB发送到服务器
parameterIndex - 第一个参数的索引为1,第二个为2,...
reader - 包含用于设置参数值的数据的对象。
length - 参数数据中的字符数。
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误;
该方法在封闭的PreparedStatement上调用,或者指定的长度小于零时调用。
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
void setBlob(int parameterIndex,
InputStream inputStream,
long length)
throws SQLException
InputStream对象。
输入流必须包含由长度指定的SQLException数,否则当执行PreparedStatement时将PreparedStatement 。
该方法与setBinaryStream (int, InputStream, int)方法不同,因为它通知驱动程序参数值应作为BLOB发送到服务器。
当使用setBinaryStream方法时,驱动程序可能需要额外的工作才能确定参数数据是否应当以LONGVARBINARY或BLOB发送到服务器
parameterIndex - 第一个参数的索引为1,第二个为2,...
inputStream - 包含将参数值设置为的数据的对象。
length - 参数数据中的字节数。
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误;
这个方法是在封闭的PreparedStatement ;
如果指定的长度小于零,或者输入流中的字节数与指定长度不匹配。
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
void setNClob(int parameterIndex,
Reader reader,
long length)
throws SQLException
Reader对象。
读者必须包含由长度指定的SQLException数,否则当执行PreparedStatement时将PreparedStatement 。
该方法与setCharacterStream (int, Reader, int)方法不同,因为它通知驱动程序参数值应作为NCLOB发送到服务器。
当使用setCharacterStream方法时,驱动程序可能不得不进行额外的工作来确定参数数据是否应作为LONGNVARCHAR或NCLOB发送到服务器
parameterIndex - 第一个参数的索引为1,第二个为2,...
reader - 包含将参数值设置为的数据的对象。
length - 参数数据中的字符数。
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果指定的长度小于零;
如果司机不支持国家字符集;
如果驱动程序可以检测到可能发生数据转换错误;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
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.Result , Writer或OutputStream为尚未关闭SQLXML对象
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
void setObject(int parameterIndex,
Object x,
int targetSqlType,
int scaleOrLength)
throws SQLException
使用给定对象设置指定参数的值。 如果第二个参数是InputStream则流必须包含scaleOrLength指定的字节数。 如果第二个参数是Reader那么读者必须包含由scaleOrLength指定的字符数。 如果这些条件不正确,驱动程序将在执行准备语句时生成SQLException 。
在发送给数据库之前,给定的Java对象将被转换为给定的targetSqlType。 如果对象具有自定义映射(是实现接口的类的SQLData ),JDBC驱动程序应该调用方法SQLData.writeSQL将其写入到SQL数据流。 如果,在另一方面,对象是实现一类Ref , Blob , Clob , NClob , Struct , java.net.URL ,或Array ,则驱动程序应当将它传递给数据库作为相应SQL类型的值。
请注意,此方法可能用于传递数据库特定的抽象数据类型。
parameterIndex - 第一个参数是1,第二个是2,...
x - 包含输入参数值的对象
targetSqlType - 要发送到数据库的SQL类型(在java.sql.Types中定义)。
比例参数可能进一步限定此类型。
scaleOrLength - 对于java.sql.Types.DECIMAL或java.sql.Types.NUMERIC types ,这是小数点后的位数。
对于Java对象类型InputStream和Reader ,这是流或读取器中数据的长度。
对于所有其他类型,此值将被忽略。
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误;
该方法在封闭的PreparedStatement上调用,或者如果由x指定的Java对象是InputStream或Reader对象,并且scale参数的值小于零
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持指定的targetSqlType
Types
void setAsciiStream(int parameterIndex,
InputStream x,
long length)
throws SQLException
LONGVARCHAR参数时,通过java.io.InputStream发送它可能更java.io.InputStream 。
将根据需要从流中读取数据,直到达到文件结尾。
JDBC驱动程序将从ASCII到数据库字符格式进行任何必要的转换。
注意:此流对象可以是标准Java流对象,也可以是实现标准接口的自己的子类。
parameterIndex - 第一个参数是1,第二个是2,...
x - 包含ASCII参数值的Java输入流
length - 流中的字节数
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
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上调用此方法
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上调用此方法
void setAsciiStream(int parameterIndex,
InputStream x)
throws SQLException
LONGVARCHAR参数时,通过java.io.InputStream发送它可能更java.io.InputStream 。
将根据需要从流中读取数据,直到达到文件结尾。
JDBC驱动程序将从ASCII到数据库字符格式进行任何必要的转换。
注意:此流对象可以是标准Java流对象,也可以是实现标准接口的自己的子类。
注:请参考JDBC驱动程序文档,以确定它可能是更有效地使用一个版本的setAsciiStream其带长度参数。
parameterIndex - 第一个参数是1,第二个是2,...
x - 包含ASCII参数值的Java输入流
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
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驱动程序不支持此方法
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驱动程序不支持此方法
void setNCharacterStream(int parameterIndex,
Reader value)
throws SQLException
Reader对象。
Reader读取数据,直到达到文件结尾。
驱动程序必须从Java字符格式转换为数据库中的国家字符集。
注意:此流对象可以是标准Java流对象,也可以是实现标准接口的自己的子类。
注:请参考JDBC驱动程序文档,以确定它可能是更有效地使用一个版本的setNCharacterStream其带长度参数。
parameterIndex - 第一个参数是1,第二个是2,...
value - 参数值
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果司机不支持国家字符集;
如果驱动程序可以检测到可能发生数据转换错误;
如果发生数据库访问错误;
或者这种方法在封闭的PreparedStatement
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持此方法
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驱动程序不支持此方法
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驱动程序不支持此方法
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驱动程序不支持此方法
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数据流。 如果,在另一方面,对象是实现一类Ref , Blob , Clob , NClob , Struct , java.net.URL ,或Array ,则驱动程序应当将它传递给数据库作为相应SQL类型的值。
请注意,此方法可能用于传递数据库特定的抽象数据类型。
默认实现将抛出SQLFeatureNotSupportedException
parameterIndex - 第一个参数是1,第二个是2,...
x - 包含输入参数值的对象
targetSqlType - 要发送到数据库的SQL类型。
比例参数可能进一步限定此类型。
scaleOrLength - 对于java.sql.JDBCType.DECIMAL或java.sql.JDBCType.NUMERIC types ,这是小数点后的位数。
对于Java对象类型InputStream和Reader ,这是流或读取器中数据的长度。
对于所有其他类型,此值将被忽略。
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法,或者如果x指定的Java对象是InputStream或Reader对象,并且scale参数的值小于零
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持指定的targetSqlType
JDBCType , SQLType
default void setObject(int parameterIndex,
Object x,
SQLType targetSqlType)
throws SQLException
setObject(int parameterIndex, Object x, SQLType targetSqlType, int scaleOrLength) ,除了它假定为0的比例。
默认实现将抛出SQLFeatureNotSupportedException
parameterIndex - 第一个参数是1,第二个是2,...
x - 包含输入参数值的对象
targetSqlType - 要发送到数据库的SQL类型
SQLException - 如果parameterIndex不对应于SQL语句中的参数标记;
如果发生数据库访问错误或在封闭的PreparedStatement上调用此方法
SQLFeatureNotSupportedException - 如果JDBC驱动程序不支持指定的targetSqlType
JDBCType , SQLType
default long executeLargeUpdate()
throws SQLException
PreparedStatement对象,它必须是一个SQL数据操纵语言(DML)语句,如INSERT , UPDATE或DELETE ;
或不返回任何内容的SQL语句,例如DDL语句。
当返回的行数可能超过Integer.MAX_VALUE时,应使用此方法。
默认实现将抛出UnsupportedOperationException
SQLException - 如果发生数据库访问错误;
这个方法在一个封闭的PreparedStatement上被调用,或者SQL语句返回一个ResultSet对象
SQLTimeoutException - 当驱动程序确定已经超过了
setQueryTimeout方法指定的超时值,并且至少尝试取消当前运行的
Statement
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.