How to connect Excel to Oracle database?
我正在尝试使用 VBA 将 Excel 连接到我的 Oracle 数据库。
1 2 3 4 5 6 7 8 9 10 11 12 | 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
我从其他问题和来源得知问题很可能是使用了错误的 DSN 版本。
但是,我不明白我需要做什么来修复它。
我的 Windows 是 64 位的,当我打开 ODBC 数据源管理器时,我看到以下内容(以及其他内容):
-
名称:Excel 文件,平台:64 位,驱动程序:Microsoft Excel 驱动程序
用户 DSN
-
名称:mydb,平台:32 位,驱动程序:ORA121020_x86 中的 oracle
在系统 DSN 下
我能做些什么来解决它?连接字符串和 DNS 如何相互关联?我应该更改其中一个 DNS 的版本吗?如果是,我该怎么做?
编辑:
连接字符串是从 Oracel SQL Developer 中的 db 连接复制的,我可以在其中访问 db.
好的,我设法修复它。我的 excel 是 64 位的,所以为了连接到数据库,我必须为我的连接创建一个也是 64 位的系统 DNS。为此,我必须转到 /Windows/system32 文件夹,选择文件 odbcad32 并在系统 DNS 下添加一个新的 DNS,该 DNS 带有我必须下载的 64 位驱动程序。假设我将 DNS 命名为 abc
然后我还将您在上面代码中看到的连接字符串更改为
1 | strCon ="Data Source=abc;User=user;Password=pw" |
据此,我在上面的帖子中使用的连接字符串不需要 DNS,所以我不知道为什么它不起作用,但是在按照刚才的描述创建新的 DNS 后,我切换到了新的指定 DNS 的连接字符串。
瞧,仅仅几个小时后,我就可以连接到我的数据库了。
快速旁注:如上所述,我在 /Windows/system32 中编辑了 obcad32 文件。这是 64 位 DNS 的文件。在管理 32 位 DNS 的文件夹 /Windows/SysWOW64 中有一个名称完全相同的文件,因此如果您遇到与我类似的问题,请注意您编辑的是哪个文件。