[英]Janino cant find java.sql.PreparedStatement if mvn test
[英]setBoolean() method of java.sql.PreparedStatement
根據 oracle 文檔 -
https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html#setBoolean(int,%20boolean)
setBoolean(int parameterIndex,boolean x)
方法 將指定參數設置為給定的 Java boolean 值。 驅動程序將其發送到數據庫時將其轉換為 SQL BIT 或 BOOLEAN 值。
這里有什么方法可以知道什么時候該值將存儲為 SQL BIT? 什么時候會存儲為 BOOLEAN?
我正在使用 oracle 數據庫,我使用此方法將值傳遞為 true(Java 布爾值)並且存儲在數據庫中的值是 1 而不是 Y。可能是什么原因?
由於Oracle 似乎沒有BIT或BOOLEAN作為存儲數據類型 ,所以不要使用setBoolean
。 它被定義為用於那些類型的列。
相反,如果它是CHAR(1)
,請使用setString
,而對您而言意味着“ true”和“ false”的任何值。 例如,從您的問題中,您可能期望Y和N:
.setString(index, x ? "Y" : "N");
TJ Crowder 的回答是正確的。
CREATE TABLE TEST_1
(
MEAL CHAR(1) CONSTRAINT MEAL_CONSTRAINT
CHECK (MEAL IN ('Y', 'N'))
);
Output:
Table: TEST_1
Column name: MEAL
Data type: CHAR(1 BYTE)
Nullable: Yes
豆角,扁豆:
private boolean meal;
public Boolean getMeal(){
return meal;
}
public void setMeal(Boolean meal){
return this.meal = meal;
}
然后使用,
preparedStatement.setString(indexOfMealCol, getMeal() ? "Y" : "N");
筆記:
Y
或N
以外的任何其他值,它將拋出錯誤
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.