vb6 / ODBC:浏览记录集时崩溃

时间:2013-02-08 09:50:36

标签: oracle vb6 odbc oledb

我正在维护一个旧的VB6应用程序,它具有一种内置查询功能。 该功能通常很有效,但在用户输入特定查询时会崩溃。对于给定的查询,崩溃可以100%重现,并且恰好发生在代码中的相同位置。

在线

toto = rcs.Fields(i)

,VB6从OLE-DB捕获阻塞错误:“多步OLE DB操作生成错误”(执行错误-214721778(80040e21)

“我”并非出界。其他列表现出同样的问题。当崩溃时崩溃,rcs.Fields(i + 1).Value为Null,rcs.Fields(i + 2).Value会引发相同的错误,并且rcs.Fields(i + 3).Value有一个非空和有效值。 它似乎与返回的结果数无关,因为我在其他表上测试了select语句并且它们没有崩溃。 该错误似乎与某些列有关,因为从select中删除了一些(但只有特定列,类型为date)会阻止应用程序崩溃。它与列的总数没有直接关系(因为事情似乎适用于大量列,我已对其进行了测试)。

连接打开如下:

conn.ConnectionString = "uid=uidValue;pwd=pwdValue;DRIVER={Microsoft ODBC for Oracle};server=serverValue"
conn.ConnectionTimeout = 30

我已经上传了两个ODBC日志,一个包含崩溃前的内容(http://pastebin.com/PH1nQ2VC),另一个(http://pastebin.com/AJqsYviQ)刚刚打开我的连接。连接打开时会有一些可疑消息,但实际上很难判断它们是否与错误有关。


查询:

SELECT
 table_.someDateField -- type DATE
FROM
 table_actual_name table_
WHERE
 table_.someStringField LIKE '%5582%' -- type VARCHAR2 (10)

-- notes
--  someDateField can be NULL
--  someStringField can be NULL too (although that would make no sense and the actual database has 1 line with a NULL)

0 个答案:

没有答案