2012-10-15 32 views
0

我剛剛進入IBM DB2,並且我有一些相當複雜的查詢來創建,這些查詢將基於Java webapp中的用戶輸入。問題是,這些查詢將以多種不同的參數組合在一起,這樣只需使用問號就沒有問題了,可以這麼說。真的沒有辦法知道應該去哪裏。幸運的是,DB2似乎允許命名參數,這使得事情變得更簡單。我深入瞭解了一些DB2文檔,看起來很簡單,但我不斷收到一個異常,說明參數標記在SQL字符串中不存在,例如:parameter1位於SQL字符串中,但它在setJccStringAtName方法中找不到「parameter1」。我將Properties對象中的「enabledNamedParameterMarkers」設置爲傳遞給getConnection方法的Properties對象中的DB2BaseDataSource.YES,但無論我是否做到這一點似乎都沒有什麼區別,儘管這看起來確實是這樣做的方式。也許我錯過了一些明顯的東西。這是否也需要啓用serverside?在IBM DB2中爲命名參數設置屬性

+1

您的代碼示例會很有幫助。 – Brian

回答

0

我認爲你的問題是你正在混合純Java開發和SLQJ的一些概念。

SQLJ允許你本身編寫SQL語句在Java代碼中,標籤

#sql{ ... }; 

之間。然而,有一個上一步「準備」代碼和生成的.java文件和。 BND。

使用SQLJ時,您可以在代碼中直接使用主變量,並且不需要使用「Sets」方法。

String id = "A00"; 
#sql [ctx] iter = 
     {SELECT LASTNAME 
     FROM EMPLOYEE 
     WHERE EMPNO = :id}; 

有很多的信息中心中的例子:http://pic.dhe.ibm.com/infocenter/db2luw/v10r1/topic/com.ibm.db2.luw.apdv.samptop.doc/doc/r0007622.html

有IBM當然集中在這一技術:CG113,尋找它在互聯網上。