|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
public interface PreparedStatement
表示预编译的 SQL 语句的对象。
SQL 语句被预编译并且存储在 PreparedStatement
对象中。然后可以使用此对象高效地多次执行该语句。
注:用来设置 IN 参数值的 setter 方法(setShort
、setString
等等)必须指定与输入参数的已定义 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 INSERT 、UPDATE 或 DELETE 语句;或者是一个什么都不返回的 SQL 语句,比如 DDL 语句。 |
ResultSetMetaData |
getMetaData()
检索包含有关 ResultSet 对象的列消息的 ResultSetMetaData 对象,ResultSet 对象将在执行此 PreparedStatement 对象时返回。 |
ParameterMetaData |
getParameterMetaData()
检索此 PreparedStatement 对象的参数的编号、类型和属性。 |
void |
setArray(int i,
Array x)
将指定参数设置为给定 Array 对象。 |
void |
setAsciiStream(int parameterIndex,
InputStream x,
int length)
将指定参数设置为给定输入流,该输入流将拥有给定字节数。 |
void |
setBigDecimal(int parameterIndex,
BigDecimal x)
将指定参数设置为给定 java.math.BigDecimal 值。 |
void |
setBinaryStream(int parameterIndex,
InputStream x,
int length)
将指定参数设置为给定输入流,该输入流将拥有给定字节数。 |
void |
setBlob(int i,
Blob x)
将指定参数设置为给定 Blob 对象。 |
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,
int length)
将给定参数设置为给定 Reader 对象,后者是给定的字符数长度。 |
void |
setClob(int i,
Clob x)
将指定参数设置为给定 Clob 对象。 |
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 float 值。 |
void |
setInt(int parameterIndex,
int x)
将指定参数设置为给定 Java int 值。 |
void |
setLong(int parameterIndex,
long x)
将指定参数设置为给定 Java long 值。 |
void |
setNull(int parameterIndex,
int sqlType)
将指定参数设置为 SQL NULL 。 |
void |
setNull(int paramIndex,
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 scale)
使用给定对象设置指定参数的值。 |
void |
setRef(int i,
Ref x)
将指定参数设置为给定 REF(<structured-type>) 值。 |
void |
setShort(int parameterIndex,
short x)
将指定参数设置为给定 Java short 值。 |
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 值。 |
方法详细信息 |
---|
ResultSet executeQuery() throws SQLException
PreparedStatement
对象中执行 SQL 查询,并返回该查询生成的 ResultSet
对象。
ResultSet
对象;从不返回 null
SQLException
- 如果发生数据库访问错误或者 SQL 语句没有返回一个 ResultSet
对象int executeUpdate() throws SQLException
PreparedStatement
对象中执行 SQL 语句,该语句必须是一个 SQL INSERT
、UPDATE
或 DELETE
语句;或者是一个什么都不返回的 SQL 语句,比如 DDL 语句。
INSERT
、UPDATE
或 DELETE
语句,返回行数 (2) 或者对于什么都不返回的 SQL 语句,返回 0
SQLException
- 如果发生数据库访问错误或者 SQL 语句返回一个 ResultSet
对象void setNull(int parameterIndex, int sqlType) throws SQLException
NULL
。
注:必须指定参数的 SQL 类型。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。sqlType
- java.sql.Types
中定义的 SQL 类型码
SQLException
- 如果发生数据库访问错误void setBoolean(int parameterIndex, boolean x) throws SQLException
boolean
值。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL BIT
值。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 参数值
SQLException
- 如果发生数据库访问错误void setByte(int parameterIndex, byte x) throws SQLException
byte
值。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL TINYINT
值。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 参数值
SQLException
- 如果发生数据库访问错误void setShort(int parameterIndex, short x) throws SQLException
short
值。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL SMALLINT
值。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 参数值
SQLException
- 如果发生数据库访问错误void setInt(int parameterIndex, int x) throws SQLException
int
值。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL INTEGER
值。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 参数值
SQLException
- 如果发生数据库访问错误void setLong(int parameterIndex, long x) throws SQLException
long
值。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL BIGINT
值。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 参数值
SQLException
- 如果发生数据库访问错误void setFloat(int parameterIndex, float x) throws SQLException
float
值。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL FLOAT
值。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 参数值
SQLException
- 如果发生数据库访问错误void setDouble(int parameterIndex, double x) throws SQLException
double
值。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL DOUBLE
值。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 参数值
SQLException
- 如果发生数据库访问错误void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException
java.math.BigDecimal
值。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL NUMERIC
值。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 参数值
SQLException
- 如果发生数据库访问错误void setString(int parameterIndex, String x) throws SQLException
String
值。在将此值发送给数据库时,驱动程序将它转换成一个 SQL VARCHAR
或 LONGVARCHAR
值(取决于该参数相对于驱动程序在 VARCHAR
值上的限制的相对大小)。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 参数值
SQLException
- 如果发生数据库访问错误void setBytes(int parameterIndex, byte[] x) throws SQLException
VARBINARY
或 LONGVARBINARY
值(取决于该参数相对于驱动程序在 VARBINARY
值上的限制的相对大小)。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 参数值
SQLException
- 如果发生数据库访问错误void setDate(int parameterIndex, Date x) throws SQLException
java.sql.Date
值。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL DATE
值。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 参数值
SQLException
- 如果发生数据库访问错误void setTime(int parameterIndex, Time x) throws SQLException
java.sql.Time
值。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL TIME
值。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 参数值
SQLException
- 如果发生数据库访问错误void setTimestamp(int parameterIndex, Timestamp x) throws SQLException
java.sql.Timestamp
值。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL TIMESTAMP
值。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 参数值
SQLException
- 如果发生数据库访问错误void setAsciiStream(int parameterIndex, InputStream x, int length) throws SQLException
LONGVARCHAR
参数时,通过 java.io.InputStream
将它发送给参数可能更实际一些。将根据需要从流中读取数据,一直读取到文件末尾。JDBC 驱动程序将执行从 ASCII 到数据库 char 格式的任何必要转换。
注:此流对象既可以是一个标准 Java 流对象,也可以是实现标准接口的用户自己的子类。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 包含 ASCII 参数值的 Java 输入流length
- 流中的字节数
SQLException
- 如果发生数据库访问错误@Deprecated void setUnicodeStream(int parameterIndex, InputStream x, int length) throws SQLException
LONGVARCHAR
参数时,通过 java.io.InputStream
对象将它发送给该参数可能更实际一些。将根据需要从流中读取数据,一直读取到文件末尾。JDBC 驱动程序将执行从 Unicode 到数据库 char 格式的任何必要转换。
注:此流对象既可以是一个标准 Java 流对象,也可以是实现标准接口的用户自己的子类。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 包含两字节 Unicode 字符形式 Unicode 参数值的 java.io.InputStream
对象length
- 流中的字节数
SQLException
- 如果发生数据库访问错误void setBinaryStream(int parameterIndex, InputStream x, int length) throws SQLException
LONGVARBINARY
参数时,通过 java.io.InputStream
对象将它发送给该参数可能更实际一些。将根据需要从流中读取数据,一直读取到文件末尾。
注:此流对象既可以是一个标准 Java 流对象,也可以是实现标准接口的用户自己的子类。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 包含二进制参数值的 Java 输入流length
- 流中的字节数
SQLException
- 如果发生数据库访问错误void clearParameters() throws SQLException
通常参数值对语句的重复使用仍然有效。设置一个参数值会自动清除其以前的值。不过,在某些情况下,直接释放当前参数值使用的资源也是很有用的;这可以通过调用 clearParameters
方法来实现。
SQLException
- 如果发生数据库访问错误void setObject(int parameterIndex, Object x, int targetSqlType, int scale) throws SQLException
使用给定对象设置指定参数的值。第二个参数必须是一个对象类型;对于整数值,应该使用 java.lang
的等效对象。
在发送到数据库之前,给定 Java 对象将被转换为给定 targetSqlType。如果对象具有自定义映射关系(属于实现 SQLData
接口的类),则 JDBC 驱动程序应该调用 SQLData.writeSQL
方法将它写入 SQL 数据流中。另一方面,如果该对象是实现 Ref
、Blob
、Clob
、Struct
或 Array
的类,则驱动程序应该将它作为相应 SQL 类型的值传递给数据库。
注意,此方法可用于传递特定于数据库的抽象数据类型。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 包含输入参数值的对象targetSqlType
- 将发送给数据库的 SQL 类型(定义于 java.sql.Types 中)。scale 参数可以进一步限定此类型。scale
- 对于 java.sql.Types.DECIMAL 或 java.sql.Types.NUMERIC 类型,该参数是小数点后的位数。对于所有其他类型,将忽略此值。
SQLException
- 如果发生数据库访问错误Types
void setObject(int parameterIndex, Object x, int targetSqlType) throws SQLException
setObject
方法。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 包含输入参数值的对象targetSqlType
- 将发送给数据库的 SQL 类型(定义于 java.sql.Types 中)
SQLException
- 如果发生数据库访问错误void setObject(int parameterIndex, Object x) throws SQLException
使用给定对象设置指定参数的值。第二个参数必须是类型 Object
;所以,应该对内置类型使用 java.lang
的等效对象。
JDBC 规范指定了一个从 Java Object
类型到 SQL 类型的标准映射关系。在发送到数据库之前,给定参数将被转换为相应 SQL 类型。
注意,通过使用特定于驱动程序的 Java 类型,此方法可用于传递特定于数据库的抽象数据类型。如果对象是实现 SQLData
接口的类,则 JDBC 驱动程序应该调用 SQLData.writeSQL
方法将它写入 SQL 数据流中。另一方面,如果该对象是实现 Ref
、Blob
、Clob
、Struct
或 Array
的类,则驱动程序应该将它作为相应 SQL 类型的值传递给数据库。
如果出现混淆,例如如果该对象是实现超过一个上述指定接口的类,则此方法抛出异常。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 包含输入参数值的对象
SQLException
- 如果发生数据库访问错误或者给定对象的类型不明确boolean execute() throws SQLException
PreparedStatement
对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。一些特别处理过的语句返回多个结果,execute
方法处理这些复杂的语句,executeQuery
和 executeUpdate
处理形式更简单的语句。
execute
方法返回一个 boolean
值,以指示第一个结果的形式。必须调用 getResultSet
或 getUpdateCount
方法来检索结果,并且必须调用 getMoreResults
移动到任何后面的结果。
ResultSet
对象,则返回 true
;如果第一个结果是更新计数或者没有结果,则返回 false
SQLException
- 如果发生数据库访问错误或者为此方法提供一个参数Statement.execute(java.lang.String)
,
Statement.getResultSet()
,
Statement.getUpdateCount()
,
Statement.getMoreResults()
void addBatch() throws SQLException
PreparedStatement
对象的批处理命令中。
SQLException
- 如果发生数据库访问错误Statement.addBatch(java.lang.String)
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
- 如果发生数据库访问错误void setRef(int i, Ref x) throws SQLException
REF(<structured-type>)
值。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL REF
值。
i
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 一个 SQL REF
值
SQLException
- 如果发生数据库访问错误void setBlob(int i, Blob x) throws SQLException
Blob
对象。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL BLOB
值。
i
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 一个映射 SQL BLOB
值的 Blob
对象
SQLException
- 如果发生数据库访问错误void setClob(int i, Clob x) throws SQLException
Clob
对象。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL CLOB
值。
i
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 一个映射 SQL Clob
值的 Clob
对象
SQLException
- 如果发生数据库访问错误void setArray(int i, Array x) throws SQLException
Array
对象。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL ARRAY
值。
i
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 一个映射 SQL Array
值的 Array
对象
SQLException
- 如果发生数据库访问错误ResultSetMetaData getMetaData() throws SQLException
ResultSet
对象的列消息的 ResultSetMetaData
对象,ResultSet
对象将在执行此 PreparedStatement
对象时返回。
因为 PreparedStatement
对象被预编译,所以可以知道不必执行就会返回的 ResultSet
对象。因此,可以在 PreparedStatement
对象上调用 getMetaData
方法,而不必等待执行该对象,然后在返回的 ResultSet
对象上调用 ResultSet.getMetaData
方法。
注:对于某些驱动程序而言,因为缺乏基础 DBMS 支持,所以使用此方法开销可能很大。
ResultSet
对象的列的描述,如果驱动程序无法返回一个 ResultSetMetaData
对象,则返回 null
SQLException
- 如果发生数据库访问错误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
- 如果发生数据库访问错误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
- 如果发生数据库访问错误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
- 如果发生数据库访问错误void setNull(int paramIndex, int sqlType, String typeName) throws SQLException
NULL
。这种版本的 setNull
方法应该用于用户定义的类型或 REF 类型参数。用户定义类型的示例包括:STRUCT、DISTINCT、JAVA_OBJECT 和命名数组类型。
注:为了便于移植,在指定 NULL 用户定义参数或 REF 参数时,应用程序必须提供 SQL 类型代码和完全限定的 SQL 类型名称。在用户定义类型的情况下,名称是参数本身的类型名称。对于 REF 参数,名称是所引用类型的类型名称。如果 JDBC 驱动程序不需要类型代码和类型名称信息,那么它可以忽略这些信息。尽管打算使此方法供用户定义的参数和 Ref 参数使用,但可以使用此方法来设置任意 JDBC 类型的 null 参数。如果该参数没有用户定义的类型或 REF 类型,则忽略给定的 typeName。
paramIndex
- 第一个参数是 1,第二个参数是 2,依此类推。sqlType
- 来自 java.sql.Types
的一个值typeName
- SQL 用户定义类型的完全限定名称;如果该参数不是用户定义类型或 REF,则忽略它
SQLException
- 如果发生数据库访问错误void setURL(int parameterIndex, URL x) throws SQLException
java.net.URL
值。在将该对象发送到数据库时,驱动程序将它转换成一个 SQL DATALINK
值。
parameterIndex
- 第一个参数是 1,第二个参数是 2,依此类推。x
- 要设置的 java.net.URL
对象
SQLException
- 如果发生数据库访问错误ParameterMetaData getParameterMetaData() throws SQLException
PreparedStatement
对象的参数的编号、类型和属性。
ParameterMetaData
对象,它包含有关此 PreparedStatement
对象的参数的编号、类型和属性的信息
SQLException
- 如果发生数据库访问错误ParameterMetaData
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。