我的程序采用ADODB查询ORACLE数据库数据,数据源采用的Microsoft ODBC for ORACLE,安装后有的机器可以执行,有的报错,其中打包的程序中包含ADODB.DLL,错误为:
System.Runtime.InteropServices.COMException (0x80004005): [Microsoft][ODBC 驱动程序 管理器] 函数序列错误
at ADODB.RecordsetClass.MoveFirst()
at QuerySQL.QueryMain.CreateHtmlYingYunReports(DateTime QueryDateTime, String BranchKind, String Store, String DeptID)
错误语句:
Dim rs As Recordset
rs = YingYunConn.Execute(sqlstr)
If rs.EOF And rs.BOF Then
Error_Information = "数据库中无记
Else
Dim i As Integer = 1
Dim j As Integer = 1
Dim k As Integer
totalsum = 0
total = 0
Try
rs.MoveFirst() 到本句时报错!
Catch ex As Exception
MessageBox.Show(ex.ToString, "aaa")
End Try
Do While Not rs.EOF()
RecordNum = RecordNum + 1
rs.MoveNext()
Loop
end if
是什么原因呀!
ConnectionString 属性的设计旨在与 ODBC 连接字符串格式尽可能准确地匹配。只有连接处于关闭状态时可以设置 ConnectionString,并且一旦设置,就会被按原样传递给驱动程序管理器和基础驱动程序。因此,ConnectionString 语法需要与驱动程序管理器和基础驱动程序所支持的内容完全匹配。
您可以使用 ConnectionString 属性来连接包括 ODBC 数据源名称 (DSN) 的各种数据源。以下示例阐释几个可能的连接字符串。
"Driver={SQL Server};Server=MyServer;Trusted_Connection=yes;Database=Northwind;"
"Driver={Microsoft ODBC for Oracle};Server=ORACLE8i7;Persist Security Info=False;Trusted_Connection=yes"
"Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\bin\nwind.mdb"
"Driver={Microsoft Excel Driver (*.xls)};DBQ=c:\bin\book1.xls"
"Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=c:\bin"
"DSN=dsnname"
注意 用于 ODBC 的.NET Framework 数据提供程序不支持其他 .NET Framework 数据提供程序所支持的“持久性安全信息”关键字。但是,ConnectionString 属性的行为如同“持久性安全信息”设置成 false 一样。这意味着,如果连接已经打开,将无法检索来自 ConnectionString 属性的密码。当从已经打开的 OdbcConnection 对象读取 ConnectionString 属性时,返回的连接字符串不带密码。这种行为无法更改,因此,如果应用程序要求该密码,请先单独存储它,然后再调用 Open。
在字符串中指定的许多设置都具有相应的只读属性。在打开连接后,所有这些属性都会得到更新,但检测到错误时例外。在检测到错误时,不会更新任何属性。OdbcConnection 属性只返回默认设置或 ConnectionString 中指定的那些设置。
在 Microsoft .NET Framework 1.0 版中,在应用程序调用 Open 方法之前不会验证连接字符串。验证连接字符串是基础 ODBC 驱动程序要做的事。如果连接字符串包含无效的或不支持的属性,该驱动程序可能会在运行时引发 OdbcException。
但是,在 .NET Framework 1.1 版中,只要设置 ConnectionString 属性,就会出现一些基本的连接字符串验证操作。在这种情况下,数据提供程序会验证连接字符串是否符合“keyword=value;...”格式,但它不会验证关键字或值是否有效。剩余的验证由基础 ODBC 驱动程序在应用程序调用 Open 方法时进行。