2013-02-12 23 views
2

我使用的是JdbcRowSet的數據源,並有一個簡單的SQLQuery:利用JDBC時,XPages中的SQL參數如何工作?

SELECT * FROM MYSCHEMA.MYTABLE WHERE KEYCOLUMN=? 

我想利用這個SQL用參數來表示我想檢索哪些行。爲此,我試圖計算一個類型爲INTEGER的sqlParameter。每當我嘗試這樣做,我結束了一個錯誤信息

DB2 SQL錯誤:SQLCODE = -313,SQLSTATE = 07004,則sqlerrmc = NULL,DRIVER = 85年4月7日

即使當我把一個簡單的將單個數字放入sqlParameter值屬性中,最終出現此錯誤。

每當我將參數直接硬編碼到sqlQuery中,一切正常。這裏發生了什麼?任何幫助是極大的讚賞。

(IBM的Lotus Domino 8.5.3,IBM DB2 10.1,爲的XPages最新EXTLIB)

+0

XPages是否符合BLUG 2012中的關係數據演示文稿對您有幫助? http://www.blug.be/blug.nsf/pages/Event20120322_Sessions – 2013-02-12 13:51:57

+1

我注意到這隻發生在使用jdbcResultSet時,jdbcQuery與參數一起使用。也許我在這裏弄錯了什麼。作爲一個旁註,是否有一個javadoc用於extlib的jdbc部分,能夠幫助我們看到各種對象的能力。 – 2013-02-12 14:35:10

+0

@PerHenrikLausten不幸的是,這個演示文檔沒有深入細節來弄清楚發生了什麼,謝謝。 :-) – 2013-02-12 14:40:28

回答

4

道歉,這已經錯過了這麼久,你卻發現其實在JdbcRowSet的數據源中的錯誤使用參數時。如前所述,它在jdbcQuery中工作,但不是jdbcRowSet。

錯誤代碼表明這一點:SQLCODE = -313, ERROR: THE NUMBER OF HOST VARIABLES SPECIFIED IS NOT EQUAL TO THE NUMBER OF PARAMETER MARKERS

這個問題目前正在跟蹤爲SPR#BGLN9N4CZU。如果發現這樣的修正,我將更新這裏,讓你知道它會是什麼EXTLIB的建設

UPDATE:針對此問題的修補程序包含在的XPages擴展庫的最新版本OpenNTF, v901 Release 9

+0

真棒,謝謝你回到我身邊。期待在任何準備就緒的情況下獲得解決方案。 :-) – 2014-08-19 20:04:13

+0

更新了我的答案,因爲修復程序位於OpenNTF上XPages Extension Library的第9版中:http://openntf.org/main.nsf/project.xsp?R =項目/中使用XPages%20Extension%20Library /發行/ FC420BE9BF48AE3C86257D4D0033007F – 2014-09-08 09:54:47

0

我會發表評論,但我不太有聲譽呢。我假設你將查詢寫入控制檯,然後剪切並粘貼到SQL工具(如Tora)中。

我剛剛完成了一個項目,使用JDBC從Oracle中提取數據。我把它記錄在我的博客上,包括代碼在這裏:http://notesspeak.blogspot.com/2013/02/notes-to-oracle-using-jdbc-end-result.html也許這將有助於瞭解我如何處理它,代碼就在那裏。我不使用RowSet,而是將一個動態SQL查詢構建爲一個String,然後執行查詢。注意:頂部的SELECT不是動態的,更下層的UPDATE是動態構建的。

+1

那麼,在這種情況下,我最終使用jdbcQuery xpages控件而不是jdbcRowSet。不知怎的,RowSet似乎在參數上有問題。在這種情況下,我最終只需要讀取數據,所以沒關係。爲了回寫數據庫,我使用@JdbcGetConnection創建了一個jdbc連接,並將其交給一個java控制器,該控制器負責將新數據寫回數據庫。 (http://stackoverflow.com/questions/14977185/retrieving-autoincrement-value-when-using-jdbcinsert) – 2013-02-26 21:01:23