我们在从我们的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