一條SQL 語句是預(yù)編譯的且存放在 PreparedStatement 對象中。該對象可用于有效地多次執(zhí)行該語句。
注意: 用于設(shè)置 IN 參數(shù)值的 setXXX 方法必須指定與定義的輸入?yún)?shù)的 SQL type 兼容的類型。例如,如果 IN 參數(shù)有 SQL type Integer ,則應(yīng)使用 setInt 方法。
如果需要任意的參數(shù)類型轉(zhuǎn)換則 setObject 方法應(yīng)當(dāng)與目標(biāo) SQL type 一起使用。
接口 java.sql.PreparedStatement
- public interface PreparedStatement
- extends Statement
- 參見:
- prepareStatement, ResultSet
方法索引
- clearParameters()
- 通常,參數(shù)值保持有效,以便于重復(fù)使用一條語句。
- execute()
- 某些準(zhǔn)備好的語句返回多個結(jié)果集;執(zhí)行方法處理這些復(fù)雜的語句和更簡單形式的語句一樣,都是通過使用 executeQuery 和 executeUpdate 方法。
- executeQuery()
- 執(zhí)行準(zhǔn)備好的 SQL 查詢并返回 ResultSet 。
- executeUpdate()
- 執(zhí)行一條 SQL INSERT、UPDATE 或 DELETE 語句。
- setAsciiStream(int, InputStream, int)
- 當(dāng)一個非常大的 ASCII 值輸入到 LONGVARCHAR 參數(shù),通過 java.io.InputStream 發(fā)送它更實際些。
- setBigDecimal(int, BigDecimal)
- 設(shè)置一個參數(shù)為 java.lang.BigDecimal 值。
- setBinaryStream(int, InputStream, int)
- 當(dāng)一個非常大的二進(jìn)制值輸入到 LONGVARBINARY 參數(shù),通過 java.io.InputStream 發(fā)送它更實際些。
- setBoolean(int, boolean)
- 設(shè)置一個參數(shù)為 Java boolean 值。
- setByte(int, byte)
- 設(shè)置一個參數(shù)為 Java byte 值。
- setBytes(int, byte[])
- 設(shè)置一個參數(shù)為 Java 字節(jié)數(shù)組。
- setDate(int, Date)
- 設(shè)置一個參數(shù)為 java.sql.Date 值。
- setDouble(int, double)
- 設(shè)置一個參數(shù)為 Java double 值。
- setFloat(int, float)
- 設(shè)置一個參數(shù)為 Java float 值。
- setInt(int, int)
- 設(shè)置一個參數(shù)為 Java int 值。
- setLong(int, long)
- 設(shè)置一個參數(shù)為 Java long 值。
- setNull(int, int)
- 設(shè)置一個參數(shù)為 SQL NULL。
- setObject(int, Object)
- 使用一個對象設(shè)置參數(shù)值;對于整數(shù)值使用和 java.lang
等價的對象。
- setObject(int, Object, int)
- 該方法類似以上的 setObject 方法,但是假設(shè)小數(shù)位數(shù)為零。
- setObject(int, Object, int, int)
- 使用一個對象設(shè)置參數(shù)值;對于整數(shù)值使用與 java.lang 等價的對象。
- setShort(int, short)
- 設(shè)置一個參數(shù)為 Java short 值。
- setString(int, String)
- 設(shè)置一個參數(shù)為 Java String 值。
- setTime(int, Time)
- 設(shè)置一個參數(shù)為 java.sql.Date 值。
- setTimestamp(int, Timestamp)
- 設(shè)置一個參數(shù)為 java.sql.Timestamp 值。
- setUnicodeStream(int, InputStream, int)
- 當(dāng)一個非常大的 UNICODE 值輸入到 LONGVARCHAR 參數(shù),通過 java.io.InputStream 發(fā)送它更實際些。
方法
executeQuery
public abstract ResultSet executeQuery() throws SQLException
- 執(zhí)行準(zhǔn)備好的 SQL 查詢并返回 ResultSet 。
- 返回值:
- 包含由查詢產(chǎn)生的數(shù)據(jù)的 ResultSet;永遠(yuǎn)不會為 null 。
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
executeUpdate
public abstract int executeUpdate() throws SQLException
- 執(zhí)行一條 SQL INSERT、UPDATE 或 DELETE 語句。 另外,可執(zhí)行沒有返回值的 SQL 語句,如 SQL DDL 語句。
- 返回值:
- 為 INSERT、UPDATE 或 DELETE 返回行數(shù),對沒有返回值的 SQL 語句則返回 0
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setNull
public abstract void setNull(int parameterIndex,
int sqlType) throws SQLException
- 設(shè)置一個參數(shù)為 SQL NULL。
注意:必須指定參數(shù)的 SQL type 。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- sqlType - java.sql.Types 定義的 SQL type 代碼
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setBoolean
public abstract void setBoolean(int parameterIndex,
boolean x) throws SQLException
- 設(shè)置一個參數(shù)為 Java boolean 值。當(dāng)驅(qū)動程序把該值發(fā)送到數(shù)據(jù)庫時驅(qū)動程序把該值轉(zhuǎn)換為一個 SQL BIT 值。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 參數(shù)值
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setByte
public abstract void setByte(int parameterIndex,
byte x) throws SQLException
- 設(shè)置一個參數(shù)為 Java byte 值。 當(dāng)驅(qū)動程序把該值發(fā)送到數(shù)據(jù)庫時驅(qū)動程序把該值轉(zhuǎn)換為一個 SQL TINYINT 值。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 參數(shù)值
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setShort
public abstract void setShort(int parameterIndex,
short x) throws SQLException
- 設(shè)置一個參數(shù)為 Java short 值。 當(dāng)驅(qū)動程序把該值發(fā)送到數(shù)據(jù)庫時驅(qū)動程序把該值轉(zhuǎn)換為一個 SQL SMALLINT 值。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 參數(shù)值
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setInt
public abstract void setInt(int parameterIndex,
int x) throws SQLException
- 設(shè)置一個參數(shù)為 Java int 值。當(dāng)驅(qū)動程序把該值發(fā)送到數(shù)據(jù)庫時驅(qū)動程序把該值轉(zhuǎn)換為一個 SQL INTEGER 值。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 參數(shù)值
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setLong
public abstract void setLong(int parameterIndex,
long x) throws SQLException
- 設(shè)置一個參數(shù)為 Java long 值。當(dāng)驅(qū)動程序把該值發(fā)送到數(shù)據(jù)庫時驅(qū)動程序把該值轉(zhuǎn)換為一個 SQL BIGINT 值。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 參數(shù)值
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setFloat
public abstract void setFloat(int parameterIndex,
float x) throws SQLException
- 設(shè)置一個參數(shù)為 Java float 值。當(dāng)驅(qū)動程序把該值發(fā)送到數(shù)據(jù)庫時驅(qū)動程序把該值轉(zhuǎn)換為一個 SQL FLOAT 值。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 參數(shù)值
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setDouble
public abstract void setDouble(int parameterIndex,
double x) throws SQLException
- 設(shè)置一個參數(shù)為 Java double 值。當(dāng)驅(qū)動程序把該值發(fā)送到數(shù)據(jù)庫時驅(qū)動程序把該值轉(zhuǎn)換為一個 SQL DOUBLE 值。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 參數(shù)值
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setBigDecimal
public abstract void setBigDecimal(int parameterIndex,
BigDecimal x) throws SQLException
- 設(shè)置一個參數(shù)為 java.lang.BigDecimal 值。當(dāng)驅(qū)動程序把該值發(fā)送到數(shù)據(jù)庫時驅(qū)動程序把該值轉(zhuǎn)換為一個 SQL NUMERIC 值。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 參數(shù)值
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setString
public abstract void setString(int parameterIndex,
String x) throws SQLException
- 設(shè)置一個參數(shù)為 Java String 值。當(dāng)驅(qū)動程序把該值發(fā)送到數(shù)據(jù)庫時驅(qū)動程序把該值轉(zhuǎn)換為一個 SQL INTEGER 值。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 參數(shù)值
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setBytes
public abstract void setBytes(int parameterIndex,
byte x[]) throws SQLException
- 設(shè)置一個參數(shù)為 Java 字節(jié)數(shù)組。當(dāng)驅(qū)動程序把該值發(fā)送到數(shù)據(jù)庫時驅(qū)動程序把該值轉(zhuǎn)換為一個 SQL INTEGER 值。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 參數(shù)值
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setDate
public abstract void setDate(int parameterIndex,
Date x) throws SQLException
- 設(shè)置一個參數(shù)為 java.sql.Date 值。當(dāng)驅(qū)動程序把該值發(fā)送到數(shù)據(jù)庫時驅(qū)動程序把該值轉(zhuǎn)換為一個 SQL DATE 值。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 參數(shù)值
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setTime
public abstract void setTime(int parameterIndex,
Time x) throws SQLException
- 設(shè)置一個參數(shù)為 java.sql.Date 值。當(dāng)驅(qū)動程序把該值發(fā)送到數(shù)據(jù)庫時驅(qū)動程序把該值轉(zhuǎn)換為一個 SQL TIME 值。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 參數(shù)值
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setTimestamp
public abstract void setTimestamp(int parameterIndex,
Timestamp x) throws SQLException
- 設(shè)置一個參數(shù)為 java.sql.Timestamp 值。當(dāng)驅(qū)動程序把該值發(fā)送到數(shù)據(jù)庫時驅(qū)動程序把該值轉(zhuǎn)換為一個 SQL TIMESTAMP 值。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 參數(shù)值
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setAsciiStream
public abstract void setAsciiStream(int parameterIndex,
InputStream x,
int length) throws SQLException
- 當(dāng)一個非常大的 ASCII 值輸入到 LONGVARCHAR 參數(shù),通過 java.io.InputStream 發(fā)送它更實際些。
JDBC 將按需要從流中讀數(shù)據(jù)直到到達(dá)文件結(jié)尾。
JDBC 驅(qū)動程序?qū)⒆鰪?ASCII 到 數(shù)據(jù)庫 char 格式的任何必要的轉(zhuǎn)換。
注意:這個流對象可以是標(biāo)準(zhǔn)的 Java 流對象或您自己的實現(xiàn)了標(biāo)準(zhǔn)接口的子類。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 包含 ASCII 參數(shù)值的 java 輸入流
- length - 流中的字節(jié)數(shù)
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setUnicodeStream
public abstract void setUnicodeStream(int parameterIndex,
InputStream x,
int length) throws SQLException
- 當(dāng)一個非常大的 UNICODE 值輸入到 LONGVARCHAR 參數(shù),通過 java.io.InputStream 發(fā)送它更實際些。
JDBC 將按需要從流中讀數(shù)據(jù)直到到達(dá)文件結(jié)尾。
JDBC 驅(qū)動程序?qū)⒆鰪?UNICODE 到 數(shù)據(jù)庫 char 格式的任何必要的轉(zhuǎn)換。
注意:這個流對象可以是標(biāo)準(zhǔn)的 Java 流對象或您自己的實現(xiàn)了標(biāo)準(zhǔn)接口的子類。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個是 2, ...
- x - 包含 UNCODE 參數(shù)值的 java 輸入流
- length - 流中的字節(jié)數(shù)
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setBinaryStream
public abstract void setBinaryStream(int parameterIndex,
InputStream x,
int length) throws SQLException
- 當(dāng)一個非常大的 binary 值輸入到 LONGVARBINARY 參數(shù),通過 java.io.InputStream 發(fā)送它更實際些。 JDBC 將按需要從流中讀數(shù)據(jù)直到到達(dá)文件結(jié)尾。
注意:這個流對象可以是標(biāo)準(zhǔn)的 Java 流對象或您自己的實現(xiàn)了標(biāo)準(zhǔn)接口的子類。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個參數(shù)是 2, ...
- x - 包含 binary 參數(shù)值的 java 輸入流
- length - 流中的字節(jié)數(shù)
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
clearParameters
public abstract void clearParameters() throws SQLException
-
通常,參數(shù)值保持有效,以便于重復(fù)使用一條語句。 設(shè)置一個參數(shù)值會自動清除它以前的值。但是,在某些情況下,立即釋放當(dāng)前參數(shù)值使用的資源是有用的;這可以通過調(diào)用 clearParameters 來實現(xiàn)。
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setObject
public abstract void setObject(int parameterIndex,
Object x,
int targetSqlType,
int scale) throws SQLException
-
使用一個對象設(shè)置參數(shù)的值;對于整數(shù)值使用與 java.lang 等價的對象。
給定的 Java 對象將在發(fā)送到數(shù)據(jù)庫之前被轉(zhuǎn)換成 targetSqlType。
注意,該方法可用于傳遞數(shù)據(jù)庫特定的抽象的數(shù)據(jù)類型。這可通過使用驅(qū)動程序特定的 Java 類型和使用 java.sql.types.OTHER 的
targetSqlType 來實現(xiàn)。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個參數(shù)是 2, ...
- x - 包含輸入?yún)?shù)值的對象
- targetSqlType - 發(fā)送到數(shù)據(jù)庫的 SQL type (如 java.sql.Types 中所定義的)。小數(shù)位數(shù)參數(shù)可是該類型進(jìn)一步合理化。
- scale - 對于 java.sql.Types.DECIMAL 或
java.sql.Types.NUMERIC 類型,這是小數(shù)點后的數(shù)字個數(shù)。對所有其它類型該值將被忽略。
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
- 參見:
- Types
setObject
public abstract void setObject(int parameterIndex,
Object x,
int targetSqlType) throws SQLException
- 該方法類似以上的 setObject 方法,但是假設(shè)小數(shù)位數(shù)為零。
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
setObject
public abstract void setObject(int parameterIndex,
Object x) throws SQLException
-
使用一個對象設(shè)置參數(shù)值;對于整數(shù)值值使用與
java.lang 等價的對象。
JDBC 規(guī)范指定了從 Java Object 類型到 SQL 類型的標(biāo)準(zhǔn)映射。給定的參數(shù) java 對象將在被發(fā)送到數(shù)據(jù)庫之前轉(zhuǎn)換成相應(yīng)的 SQL type。
注意,該方法可通過使用特定于驅(qū)動程序的 Java 類型把特定的抽象數(shù)據(jù)類型傳遞給數(shù)據(jù)庫。
- 參數(shù):
- parameterIndex - 第一個參數(shù)是 1, 第二個參數(shù)是 2, ...
- x - 包含輸入?yún)?shù)值的對象
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
execute
public abstract boolean execute() throws SQLException
- 某些準(zhǔn)備好的語句返回多個結(jié)果集;執(zhí)行方法處理這些復(fù)雜的語句和更簡單形式的語句一樣,都是通過使用 executeQuery 和 executeUpdate 方法來處理。
- 拋出:
SQLException
- 如果發(fā)生了數(shù)據(jù)訪問錯誤。
- 參見:
- execute