我一直在爭論這個問題一段時間,我還找不到解決方案。這很容易解釋。當我傳遞String參數時,爲什麼我的結果集不正確?
我有一個Java方法傳遞一個字符串作爲參數,這個字符串是一個SQL查詢。
當我執行此查詢傳遞字符串參數我得到1行的結果。
ResultSet rs1 = stmt.executeQuery(sqlq);
當我在代碼中輸入完全相同的查詢時,我得到5行的正確返回值。
結果集RS1 = stmt.executeQuery(「選擇a.GSM_NO AS A_GSM_NO,a.START_DATE AS A_START_DATE,a.INVOICE_DETAIL_CODE AS A_INVOICE_DETAIL_CODE,a.VALUE_VAT_EXCLUDED AS A_VALUE_VAT_EXCLUDED, b.GSM_NO AS B_GSM_NO,B。 START_DATE AS B_START_DATE,b.INVOICE_DETAIL_CODE AS B_INVOICE_DETAIL_CODE,b.VALUE_VAT_EXCLUDED AS B_VALUE_VAT_EXCLUDED FROM INVOICEPRINT_DETAIL_LEGACY一個,INVOICEPRINT_DETAIL_GENESIS b其中 a.GSM_NO = b.GSM_NO AND a.START_DATE = b.START_DATE AND a.INVOICE_DETAIL_CODE = b.INVOICE_DETAIL_CODE AND a.INVOICE_DETAIL_CODE IN('DT-ASUT OP','DT-AVMAH4','DT-BAGTOP','DT-BNDTOP', 'DT-DIGTOP','DT-FATTUT','DT-GORGPRF')「);
是的,我打印的字符串參數和內容是完全一樣的,雖然輸出是diferent。
我做了一些測試,當字符串的最後部分只有:
IN( 'DT-ASUTOP', 'DT-AVMAH4', 'DT-BAGTOP', 'DT-BNDTOP' ,
'DT-DIGTOP')「);
它的工作原理正確地傳遞參數或手動鍵入查詢在這種情況下它返回4行,因爲在該領域INVOICE_DET。找到帶DT-DIGTOP的AIL_CODE 4行。完美和正確。
當我添加DT-GORGPRF這就是我正在尋找在列INVOICE_DETAIL_CODE另一個值,而且只在同一行,但存在與查詢的結果:
IN(「DT -ASUTOP」, 'DT-AVMAH4', 'DT-BAGTOP', 'DT-BNDTOP', 'DT-DIGTOP', 'DT-FATTUT', 'DT-GORGPRF')「);
當我通過字符串參數返回只有1行,行與DT - GORGPRF並忽略最後4行。當我手動輸入查詢executeQuery方法我得到正確的結果。
這沒有意義。我能得到關於如何解決它的輸入嗎?
我的猜測是,當你在java中運行它時,你只能讀第一行。 – 2014-12-19 11:44:47
不,我的代碼打印結果集中的所有值..當我通過參數查詢它打印1行..當我通過查詢直接打字它打印5行,因爲它應該... – 2014-12-19 11:47:00
fwiw - 你在DT-FATTUT之後可能有一個雜散空間。 – 2014-12-19 12:00:04