簡體   English   中英

Java prepareStatement設置

[英]Java prepareStatement setting

我准備了這樣的聲明:

WHERE  TRADE_DATE >= TRUNC(add_months(current_date,-12))

但是我想要這樣:

WHERE  TRADE_DATE >= TRUNC(?)

然后像下面這樣設置值:

query.setString(1,"add_months(current_date,-12)");

要么

query.setString(1,"trunc(sysdate, 'YEAR')");

但是,我說錯了

inconsistent datatypes: expected DATE got NUMBER

我怎樣才能做到這一點?

我認為您必須使用字符串串聯等方法來構建模板語句,並記錄要在其旁邊插入的參數(在對象數組中?)。

然后遍歷每個對象並執行setString()等。您不能使用PreparedStatement插入任意SQL(這實際上會挫敗PreparedStatement的好處之一,這是將SQL構造限制為自定義參數)

您可以像SQL一樣設置用Calendar計算的java.sql.Date。

否則-如果可以枚舉要填充的表達式,則可以使用SQL CASE表達式打開選擇編號:

CASE ? WHEN 1 THEN add_months(current_date,-12)
       WHEN 2 THEN trunc(sysdate, 'YEAR')
END

query.setInt(choice);

也許一些存儲過程。

暫無
暫無

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

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