1

我有一个旧的 VB6 应用程序,它使用 ADO 连接到 SQL 服务器数据库,如:

Dim cnServer As New ADODB.Connection
cnServer.Provider = "sqloledb"
sConnectString = "Server=" & txtServer.Text & ";" & _
                 "Database=" & txtDatabase.Text & ";" & _
                 "User ID=" & txtUserID.Text & ";" & _
                 "Password=" & txtPassword.Text & ";" & _
                 "Connect timeout=10"
cnServer.Open sConnectString

...这一直有效。但现在我需要修改它以连接到 Oracle 11g 数据库。我找到了这篇文章并将代码修改为:

Dim cnServer As New ADODB.Connection
cnVLServer.Provider = "OraOLEDB.Oracle"
sConnectString = "Server=" & txtServer.Text & ";" & _
                 "Data Source=" & txtDatabase.Text & ";" & _
                 "User ID=" & txtUserID.Text & ";" & _
                 "Password=" & txtPassword.Text & ";" & _
                 "Connect timeout=10"
cnVLServer.Open sConnectString

...但是当我运行它时,我收到一个错误,上面写着3706, Provider cannot be found. It may not be properly installed. 这发生在我的开发 VM 上(不要笑——仍在 Win2K Pro 上),也在我的测试机器上(使用 Win XP) .

一些进一步的搜索表明 oracore11.dll 是一个依赖项,因此我访问了 Oracle 的下载站点并将这个 DLL 作为一个 .zip 文件的一部分下载,该文件包含我认为与 Windows 相关的全套编码工具。但是,即使我将此 DLL 与我的 VB6 可执行文件放在同一个文件夹中,错误仍然会发生。当我尝试注册 DLL 时,尝试只会产生另一个错误: The specified module could not be found.

在对可能是错误的路径或无法解决的问题进行任何进一步的打击之前,我认为我应该首先检查并查看让 VB6 应用程序连接到 Oracle 的最佳/最简单的方法。我的目标是让这个 VB6 应用程序尽可能便携,不需要任何预安装的软件包即可工作,并且可以轻松地通过 .exe 本身传递最少的依赖项集。(作为参考,这个VB6应用程序不是商业发行的产品,只是我自己部门内部使用的测试工具。它获取平面文件固定宽度数据,对其进行解析,然后生成SQL代码将其插入数据库。)

4

1 回答 1

2

要配置 Oracle Database Instant,您必须:

  1. 在您的系统上安装 Oracle Database Instant Client 及其 ODBC 驱动程序;
  2. 设置 TNS_ADMIN 环境变量;
  3. 为您的客户端配置一个 tnsnames.ora 配置文件。

请参阅此链接,以获取更多详细信息...

于 2013-10-07T16:15:34.483 回答