簡體   English   中英

java.sql.PreparedStatement 的 setBoolean() 方法

[英]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");

筆記:

  • 提供YN以外的任何其他值,它將拋出錯誤
  • Null 值被接受

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM