如何连接 Excel 到 Oracle 数据库?
How to connect Excel to Oracle database?
我正在尝试使用 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] Data source name not found and no default driver specified
我从其他人那里得知 questions and sources 问题很可能是使用了错误版本的 DSN。
但是,我不明白我需要做什么来修复它。
我的 Windows 是 64 位的,当我打开 ODBC 数据源管理器时,我看到以下内容(以及其他内容):
名称:Excel 文件,平台:64 位,驱动程序:Microsoft Excel 驱动程序
用户 DSN
名称:mydb,平台:32位,驱动:oracle in ORA121020_x86
在系统 DSN 下
我该如何解决?连接字符串和 DNS 如何相互关联?我应该更改其中一个 DNS 的版本吗?如果是,我该怎么做?
编辑:
连接字符串是从我可以访问数据库的 Oracel SQL Developer 中的数据库连接复制的。
好的,我设法修复了它。我的 excel 是 64 位的,所以为了连接到数据库,我必须为我的连接创建一个也是 64 位的系统 DNS。为此,我必须转到 /Windows/system32 文件夹,选择文件 odbcad32 并在系统 DNS 下添加一个新的 DNS,其中包含我必须下载的 64 位驱动程序。假设我将 DNS 命名为 abc
然后我也将您在上面代码中看到的连接字符串更改为
strCon = "Data Source=abc;User=user;Password=pw"
根据this,我在上面post中使用的连接字符串不需要DNS,所以我不知道为什么它不起作用,但是在创建一个新的DNS之后如前所述,我切换到指定 DNS 的新连接字符串。
瞧,几个小时后我就可以连接到我的数据库了。
快速旁注:如上所述,我在 /Windows/system32 中编辑了 obcad32 文件。这是 64 位 DNS 的文件。在管理32位DNS的文件夹/Windows/SysWOW64中有一个同名的文件,所以如果你有和我一样的问题,注意你编辑的是哪个文件。
我正在尝试使用 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] Data source name not found and no default driver specified
我从其他人那里得知 questions and sources 问题很可能是使用了错误版本的 DSN。
但是,我不明白我需要做什么来修复它。
我的 Windows 是 64 位的,当我打开 ODBC 数据源管理器时,我看到以下内容(以及其他内容):
名称:Excel 文件,平台:64 位,驱动程序:Microsoft Excel 驱动程序
用户 DSN
名称:mydb,平台:32位,驱动:oracle in ORA121020_x86
在系统 DSN 下
我该如何解决?连接字符串和 DNS 如何相互关联?我应该更改其中一个 DNS 的版本吗?如果是,我该怎么做?
编辑: 连接字符串是从我可以访问数据库的 Oracel SQL Developer 中的数据库连接复制的。
好的,我设法修复了它。我的 excel 是 64 位的,所以为了连接到数据库,我必须为我的连接创建一个也是 64 位的系统 DNS。为此,我必须转到 /Windows/system32 文件夹,选择文件 odbcad32 并在系统 DNS 下添加一个新的 DNS,其中包含我必须下载的 64 位驱动程序。假设我将 DNS 命名为 abc
然后我也将您在上面代码中看到的连接字符串更改为
strCon = "Data Source=abc;User=user;Password=pw"
根据this,我在上面post中使用的连接字符串不需要DNS,所以我不知道为什么它不起作用,但是在创建一个新的DNS之后如前所述,我切换到指定 DNS 的新连接字符串。
瞧,几个小时后我就可以连接到我的数据库了。
快速旁注:如上所述,我在 /Windows/system32 中编辑了 obcad32 文件。这是 64 位 DNS 的文件。在管理32位DNS的文件夹/Windows/SysWOW64中有一个同名的文件,所以如果你有和我一样的问题,注意你编辑的是哪个文件。