一条SQL 语句是预编译的且存放在 PreparedStatement 对象中。该对象可用于有效地多次执行该语句。
注意: 用于设置 IN 参数值的 setXXX 方法必须指定与定义的输入参数的 SQL type 兼容的类型。例如,如果 IN 参数有 SQL type Integer ,则应使用 setInt 方法。
如果需要任意的参数类型转换则 setObject 方法应当与目标 SQL type 一起使用。
接口 java.sql.PreparedStatement
- public interface PreparedStatement
- extends Statement
- 参见:
- prepareStatement, ResultSet
方法索引
- clearParameters()
- 通常,参数值保持有效,以便于重复使用一条语句。
- execute()
- 某些准备好的语句返回多个结果集;执行方法处理这些复杂的语句和更简单形式的语句一样,都是通过使用 executeQuery 和 executeUpdate 方法。
- executeQuery()
- 执行准备好的 SQL 查询并返回 ResultSet 。
- executeUpdate()
- 执行一条 SQL INSERT、UPDATE 或 DELETE 语句。
- setAsciiStream(int, InputStream, int)
- 当一个非常大的 ASCII 值输入到 LONGVARCHAR 参数,通过 java.io.InputStream 发送它更实际些。
- setBigDecimal(int, BigDecimal)
- 设置一个参数为 java.lang.BigDecimal 值。
- setBinaryStream(int, InputStream, int)
- 当一个非常大的二进制值输入到 LONGVARBINARY 参数,通过 java.io.InputStream 发送它更实际些。
- setBoolean(int, boolean)
- 设置一个参数为 Java boolean 值。
- setByte(int, byte)
- 设置一个参数为 Java byte 值。
- setBytes(int, byte[])
- 设置一个参数为 Java 字节数组。
- setDate(int, Date)
- 设置一个参数为 java.sql.Date 值。
- setDouble(int, double)
- 设置一个参数为 Java double 值。
- setFloat(int, float)
- 设置一个参数为 Java float 值。
- setInt(int, int)
- 设置一个参数为 Java int 值。
- setLong(int, long)
- 设置一个参数为 Java long 值。
- setNull(int, int)
- 设置一个参数为 SQL NULL。
- setObject(int, Object)
- 使用一个对象设置参数值;对于整数值使用和 java.lang
等价的对象。
- setObject(int, Object, int)
- 该方法类似以上的 setObject 方法,但是假设小数位数为零。
- setObject(int, Object, int, int)
- 使用一个对象设置参数值;对于整数值使用与 java.lang 等价的对象。
- setShort(int, short)
- 设置一个参数为 Java short 值。
- setString(int, String)
- 设置一个参数为 Java String 值。
- setTime(int, Time)
- 设置一个参数为 java.sql.Date 值。
- setTimestamp(int, Timestamp)
- 设置一个参数为 java.sql.Timestamp 值。
- setUnicodeStream(int, InputStream, int)
- 当一个非常大的 UNICODE 值输入到 LONGVARCHAR 参数,通过 java.io.InputStream 发送它更实际些。
方法
executeQuery
public abstract ResultSet executeQuery() throws SQLException
- 执行准备好的 SQL 查询并返回 ResultSet 。
- 返回值:
- 包含由查询产生的数据的 ResultSet;永远不会为 null 。
- 抛出:
SQLException
- 如果发生了数据访问错误。
executeUpdate
public abstract int executeUpdate() throws SQLException
- 执行一条 SQL INSERT、UPDATE 或 DELETE 语句。 另外,可执行没有返回值的 SQL 语句,如 SQL DDL 语句。
- 返回值:
- 为 INSERT、UPDATE 或 DELETE 返回行数,对没有返回值的 SQL 语句则返回 0
- 抛出:
SQLException
- 如果发生了数据访问错误。
setNull
public abstract void setNull(int parameterIndex,
int sqlType) throws SQLException
- 设置一个参数为 SQL NULL。
注意:必须指定参数的 SQL type 。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- sqlType - java.sql.Types 定义的 SQL type 代码
- 抛出:
SQLException
- 如果发生了数据访问错误。
setBoolean
public abstract void setBoolean(int parameterIndex,
boolean x) throws SQLException
- 设置一个参数为 Java boolean 值。当驱动程序把该值发送到数据库时驱动程序把该值转换为一个 SQL BIT 值。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 参数值
- 抛出:
SQLException
- 如果发生了数据访问错误。
setByte
public abstract void setByte(int parameterIndex,
byte x) throws SQLException
- 设置一个参数为 Java byte 值。 当驱动程序把该值发送到数据库时驱动程序把该值转换为一个 SQL TINYINT 值。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 参数值
- 抛出:
SQLException
- 如果发生了数据访问错误。
setShort
public abstract void setShort(int parameterIndex,
short x) throws SQLException
- 设置一个参数为 Java short 值。 当驱动程序把该值发送到数据库时驱动程序把该值转换为一个 SQL SMALLINT 值。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 参数值
- 抛出:
SQLException
- 如果发生了数据访问错误。
setInt
public abstract void setInt(int parameterIndex,
int x) throws SQLException
- 设置一个参数为 Java int 值。当驱动程序把该值发送到数据库时驱动程序把该值转换为一个 SQL INTEGER 值。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 参数值
- 抛出:
SQLException
- 如果发生了数据访问错误。
setLong
public abstract void setLong(int parameterIndex,
long x) throws SQLException
- 设置一个参数为 Java long 值。当驱动程序把该值发送到数据库时驱动程序把该值转换为一个 SQL BIGINT 值。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 参数值
- 抛出:
SQLException
- 如果发生了数据访问错误。
setFloat
public abstract void setFloat(int parameterIndex,
float x) throws SQLException
- 设置一个参数为 Java float 值。当驱动程序把该值发送到数据库时驱动程序把该值转换为一个 SQL FLOAT 值。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 参数值
- 抛出:
SQLException
- 如果发生了数据访问错误。
setDouble
public abstract void setDouble(int parameterIndex,
double x) throws SQLException
- 设置一个参数为 Java double 值。当驱动程序把该值发送到数据库时驱动程序把该值转换为一个 SQL DOUBLE 值。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 参数值
- 抛出:
SQLException
- 如果发生了数据访问错误。
setBigDecimal
public abstract void setBigDecimal(int parameterIndex,
BigDecimal x) throws SQLException
- 设置一个参数为 java.lang.BigDecimal 值。当驱动程序把该值发送到数据库时驱动程序把该值转换为一个 SQL NUMERIC 值。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 参数值
- 抛出:
SQLException
- 如果发生了数据访问错误。
setString
public abstract void setString(int parameterIndex,
String x) throws SQLException
- 设置一个参数为 Java String 值。当驱动程序把该值发送到数据库时驱动程序把该值转换为一个 SQL INTEGER 值。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 参数值
- 抛出:
SQLException
- 如果发生了数据访问错误。
setBytes
public abstract void setBytes(int parameterIndex,
byte x[]) throws SQLException
- 设置一个参数为 Java 字节数组。当驱动程序把该值发送到数据库时驱动程序把该值转换为一个 SQL INTEGER 值。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 参数值
- 抛出:
SQLException
- 如果发生了数据访问错误。
setDate
public abstract void setDate(int parameterIndex,
Date x) throws SQLException
- 设置一个参数为 java.sql.Date 值。当驱动程序把该值发送到数据库时驱动程序把该值转换为一个 SQL DATE 值。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 参数值
- 抛出:
SQLException
- 如果发生了数据访问错误。
setTime
public abstract void setTime(int parameterIndex,
Time x) throws SQLException
- 设置一个参数为 java.sql.Date 值。当驱动程序把该值发送到数据库时驱动程序把该值转换为一个 SQL TIME 值。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 参数值
- 抛出:
SQLException
- 如果发生了数据访问错误。
setTimestamp
public abstract void setTimestamp(int parameterIndex,
Timestamp x) throws SQLException
- 设置一个参数为 java.sql.Timestamp 值。当驱动程序把该值发送到数据库时驱动程序把该值转换为一个 SQL TIMESTAMP 值。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 参数值
- 抛出:
SQLException
- 如果发生了数据访问错误。
setAsciiStream
public abstract void setAsciiStream(int parameterIndex,
InputStream x,
int length) throws SQLException
- 当一个非常大的 ASCII 值输入到 LONGVARCHAR 参数,通过 java.io.InputStream 发送它更实际些。
JDBC 将按需要从流中读数据直到到达文件结尾。
JDBC 驱动程序将做从 ASCII 到 数据库 char 格式的任何必要的转换。
注意:这个流对象可以是标准的 Java 流对象或您自己的实现了标准接口的子类。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 包含 ASCII 参数值的 java 输入流
- length - 流中的字节数
- 抛出:
SQLException
- 如果发生了数据访问错误。
setUnicodeStream
public abstract void setUnicodeStream(int parameterIndex,
InputStream x,
int length) throws SQLException
- 当一个非常大的 UNICODE 值输入到 LONGVARCHAR 参数,通过 java.io.InputStream 发送它更实际些。
JDBC 将按需要从流中读数据直到到达文件结尾。
JDBC 驱动程序将做从 UNICODE 到 数据库 char 格式的任何必要的转换。
注意:这个流对象可以是标准的 Java 流对象或您自己的实现了标准接口的子类。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个是 2, ...
- x - 包含 UNCODE 参数值的 java 输入流
- length - 流中的字节数
- 抛出:
SQLException
- 如果发生了数据访问错误。
setBinaryStream
public abstract void setBinaryStream(int parameterIndex,
InputStream x,
int length) throws SQLException
- 当一个非常大的 binary 值输入到 LONGVARBINARY 参数,通过 java.io.InputStream 发送它更实际些。 JDBC 将按需要从流中读数据直到到达文件结尾。
注意:这个流对象可以是标准的 Java 流对象或您自己的实现了标准接口的子类。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个参数是 2, ...
- x - 包含 binary 参数值的 java 输入流
- length - 流中的字节数
- 抛出:
SQLException
- 如果发生了数据访问错误。
clearParameters
public abstract void clearParameters() throws SQLException
-
通常,参数值保持有效,以便于重复使用一条语句。 设置一个参数值会自动清除它以前的值。但是,在某些情况下,立即释放当前参数值使用的资源是有用的;这可以通过调用 clearParameters 来实现。
- 抛出:
SQLException
- 如果发生了数据访问错误。
setObject
public abstract void setObject(int parameterIndex,
Object x,
int targetSqlType,
int scale) throws SQLException
-
使用一个对象设置参数的值;对于整数值使用与 java.lang 等价的对象。
给定的 Java 对象将在发送到数据库之前被转换成 targetSqlType。
注意,该方法可用于传递数据库特定的抽象的数据类型。这可通过使用驱动程序特定的 Java 类型和使用 java.sql.types.OTHER 的
targetSqlType 来实现。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个参数是 2, ...
- x - 包含输入参数值的对象
- targetSqlType - 发送到数据库的 SQL type (如 java.sql.Types 中所定义的)。小数位数参数可是该类型进一步合理化。
- scale - 对于 java.sql.Types.DECIMAL 或
java.sql.Types.NUMERIC 类型,这是小数点后的数字个数。对所有其它类型该值将被忽略。
- 抛出:
SQLException
- 如果发生了数据访问错误。
- 参见:
- Types
setObject
public abstract void setObject(int parameterIndex,
Object x,
int targetSqlType) throws SQLException
- 该方法类似以上的 setObject 方法,但是假设小数位数为零。
- 抛出:
SQLException
- 如果发生了数据访问错误。
setObject
public abstract void setObject(int parameterIndex,
Object x) throws SQLException
-
使用一个对象设置参数值;对于整数值值使用与
java.lang 等价的对象。
JDBC 规范指定了从 Java Object 类型到 SQL 类型的标准映射。给定的参数 java 对象将在被发送到数据库之前转换成相应的 SQL type。
注意,该方法可通过使用特定于驱动程序的 Java 类型把特定的抽象数据类型传递给数据库。
- 参数:
- parameterIndex - 第一个参数是 1, 第二个参数是 2, ...
- x - 包含输入参数值的对象
- 抛出:
SQLException
- 如果发生了数据访问错误。
execute
public abstract boolean execute() throws SQLException
- 某些准备好的语句返回多个结果集;执行方法处理这些复杂的语句和更简单形式的语句一样,都是通过使用 executeQuery 和 executeUpdate 方法来处理。
- 抛出:
SQLException
- 如果发生了数据访问错误。
- 参见:
- execute