2010-05-25 53 views

回答

3

遺憾的是沒有。位置參數('?')正是由它們在查詢中的位置或外觀順序來標識的。如果刪除'IDFOLDER =?',那麼您將爲查詢的其餘部分分配錯誤的參數,並且可能會得到一個異常,因爲分配的參數數量與查詢中預期的數量不匹配。

我假設您無法更改源代碼,因爲這是最簡單的路由 - 更改SQL,然後更改JDBC參數以匹配。如果您需要使用相同數量的參數,則可以以不改變IDFOLDER值的方式編寫查詢,但使用第一個參數。

SET IDFOLDER=CASE ISNULL(?) WHEN 0 THEN IDFOLDER ELSE IDFOLDER END 

如果您的JDBC驅動程序支持命名參數,那可能會給您一個更清晰的選擇。

4

不,你不能。您需要在需要時有條件地將該部分SQL插入到SQL字符串中。

4

不,您必須編寫第二個不包含IDFOLDER列的查詢。所有參數都必須綁定。

0

的Javadoc沒有明確說你做不到,但是當我嘗試了,我得到了一個例外是這樣的:

java.sql.SQLException: Parameter not set