我們在從我們的VB.NET 2010應用程序中將記錄插入到iSeries上的文件/表時遇到問題。在db2數據庫上插入失敗(在iSeries上)
Windows XP上運行舊的系統沒有問題,但我們正試圖運行在Windows 7 64位框中的代碼(insode VS 2010),和OS400 V5.4
以下是錯誤信息
ERROR [42000] [IBM][System i Access ODBC Driver][DB2 for i5/OS]SQL0104 - Token 2014 was not valid. Valid tokens:) ,.
這裏是代碼的相關部分:
sConStr = "Driver={Client Access ODBC Driver (32-bit)};" & _
"System=" & sAS400Server & ";" & _
"Uid=" & UCase(sAS400UserName) & ";" & _
"Pwd=" & UCase(sAS400UserPwd) & ";" & _
"DBQ=" & UCase$(sAS400Library) & _
IIf(Trim$(sLibraryOther) <> "", "," & sLibraryOther, "") & _
";COMPRESSION=1;ALLOWUNSCHAR=1;TRANSLATE=1;"
conOdbc = New Odbc.OdbcConnection(sConStr)
conOdbc.Open()
我們創造出INSERT語句看起來像這樣:通過驅動程序返回
"INSERT INTO kerry.YSEPF(YSESID, YSESAN, YSESCC, YSECCY, YSENEGP, YSEAMA, YSESPOD, YSEVFR, YSESNAR, YSELMBY, YSELMPC, YSECRBY, YSECRPC) VALUES (0002109416, 12345678, PS , GBP, C, 000000000006851, 1140918, 1140831, August 2014 Fuel for Co.van , N , 'profile ','DPVO ','profile ','DPVO ')"
然後我們嘗試如下插入:
iSubmitItems += 1
Try
iRetVal = cmdOdbc.ExecuteNonQuery()
iSubmitItemsSuccess += 1
Catch ex As Exception
iSubmitItemsFail += 1
和我們每次收到錯誤消息。
有什麼我們缺少的,如驅動程序(它是一個32位的驅動程序,但安裝在不同的地方Win64上?)
編輯 只是想提一提,另外,目標文件包裝或壓縮,這就是爲什麼我們不能在FTP固定長度的文本格式的數據,嘩嘩就是我們的一些其他數據導入
感謝所有幫助
注意那裏的OP的代碼不僅僅是'「2014年8月爲燃料的Co.van''多個字符串然而,數據庫在2014年拋出錯誤的原因是DB2 for i支持隱式轉換。所以,一個單詞字符串「PS」,「GBP」隱含地轉換爲「CHAR」。直到遇到多字符串時,數據庫才確定要做什麼。最佳做法是明確引用您的字符串。 – Charles 2014-09-24 14:44:03
非常感謝這麼多人,我完全錯過了我在牆後的iSeries大喊大叫的15分鐘內一遍又一遍地尖叫**它是SQL該死的,接受它** – 2014-09-24 20:29:38
同意SQL注入的事情,但它是一個封閉的網絡......據我所知,我們的插入到iSeries消息隊列中,然後用控制語言編寫的另一個程序是否將記錄加載到文件中。 – 2014-09-24 20:33:33