【问题标题】:How to connect Excel to Oracle database?如何将 Excel 连接到 Oracle 数据库?
【发布时间】:2020-04-22 00:18:32
【问题描述】:

我正在尝试使用 VBA 将 Excel 连接到我的 Oracle 数据库。

Sub dbConnect()

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Set con = New ADODB.Connection
    Set rs = New ADODB.Recordset

    strCon = "Driver={Microsoft ODBC for Oracle}; " & _
    "CONNECTSTRING=(description=(address=(protocol=tcp)(host=mydb.domain.com)(port=1522))(connect_data=(sid=mydb))); uid=user; pwd=pw;"
    con.Open (strCon)

End Sub

我收到一个错误。

[Microsoft][ODBC Driver Manager] 未找到数据源名称且未指定默认驱动程序

我从其他questionssources 得知问题很可能是使用了错误的DSN 版本。

但是,我不明白我需要做什么来修复它。

我的 Windows 是 64 位的,当我打开 ODBC 数据源管理器时,我看到以下内容(以及其他内容):

  • 名称:Excel 文件,平台:64 位,驱动程序:Microsoft Excel 驱动程序

    用户 DSN

  • 名称:mydb,平台:32 位,驱动程序:ORA121020_x86 中的 oracle

    在系统 DSN 下

我能做些什么来解决它?连接字符串和 DNS 如何相互关联?我应该更改其中一个 DNS 的版本吗?如果是,我该怎么做?

编辑: 连接字符串是从我可以访问数据库的 Oracel SQL Developer 中的数据库连接复制而来的。

【问题讨论】:

  • 您的 Excel 是 32 位还是 64 位?
  • 64位,不过,我已经解决了问题并回答了我自己的问题
  • 没错,驱动程序Microsoft ODBC for Oracle 只存在于 32 位,因此您不能将其用于 64 位的 Excel。

标签: vba oracle odbc connection-string


【解决方案1】:

好的,我设法解决了它。我的 excel 是 64 位的,所以为了连接到数据库,我必须为我的连接创建一个也是 64 位的系统 DNS。为此,我必须转到 /Windows/system32 文件夹,选择文件 odbcad32 并在系统 DNS 下添加一个新的 DNS,其中包含我必须下载的 64 位驱动程序。假设我将 DNS 命名为 abc

然后我还将您在上面代码中看到的连接字符串更改为

strCon = "Data Source=abc;User=user;Password=pw"

根据this,我在上面的帖子中使用的连接字符串不需要 DNS,所以我不知道为什么它不起作用,但是在按照刚才的描述创建新的 DNS 后,我切换到了新的指定 DNS 的连接字符串。

瞧,仅仅几个小时后,我就能够连接到我的数据库。

快速旁注:如上所述,我在 /Windows/system32 中编辑了 obcad32 文件。这是 64 位 DNS 的文件。 /Windows/SysWOW64 文件夹中有一个同名的文件,它管理着 32 位 DNS,所以如果你遇到和我类似的问题,请注意你编辑的是哪个文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 2016-08-25
    • 2020-08-05
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多