Excel VBA MySQL ADO 连接

4

我正在尝试在本地计算机上的Excel和服务器上的MySQL数据库之间建立ADO连接。

我看到的示例(例如这里这里)中有一个形式为MySQL ODBC 5.x Driver的驱动程序。似乎在安装最新的mysql 连接器/odbc下载(32位,与我的msexcel匹配)之后,相关的注册表驱动程序文件HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Driver\现在被命名为“SQL Server”和“SQL Server Native Client 11.0”。但是我无法使用这两个驱动程序成功地建立到MySQL的连接。

我的VBA代码

Sub connect()
Dim Password As String
Dim SQLStr As String
Dim Server_Name As String
Dim User_ID As String
Dim Database_Name As String

Set rs = CreateObject("ADODB.Recordset") 'EBGen-Daily
Server_Name = "184.154.225.243"
Database_Name = "*******" ' Name of database
User_ID = "********" 'id user or username
Password = "*******" 'Password
Port = "3306"

SQLStr = "SELECT * FROM *******"

Set Cn = CreateObject("ADODB.Connection")
Cn.Open "Driver={SQL Server};Server=" & _
        Server_Name & ";Port=" & Port & ";Database=" & Database_Name & _
        ";Uid=" & User_ID & ";Pwd=" & Password & ";"

rs.Open SQLStr, Cn, adOpenStatic

在运行以上命令时,我收到了错误信息[Microsoft][ODBC SQL Server Drive][DBNETLIB]SQL Server does not exist or access denied。对于“本机客户端11.0”驱动程序的错误是Could not open a connection to SQL Server[53]
我已经在MySQL workbench中测试了连接参数,一切都正常。发生了什么?

1
"Driver={SQL Server}" 表示您正在尝试使用 MSSQL 驱动程序而不是 MySQL。转到“运行”->“odbcad32”->“驱动程序”选项卡,查看 MySQL 驱动程序是否列为已安装的驱动程序。 - slayernoah
此外,根据您使用的 Microsoft Office 的 32 位或 64 位版本,您需要从您已链接到的下载页面下载相同版本。 - slayernoah
1个回答

10
  1. 检查您正在使用的 Microsoft Office 版本是 32 位还是 64 位

  2. 根据上述结果,从下载链接下载并安装相应的 MySQL 驱动程序。

  3. 安装完 ODBC 驱动程序后,请检查 ODBC snap in,确认该驱动程序已列为已安装。

如果您使用的是 32 位操作系统,则所有内容均为 32 位。请使用 Run -> odbcad32.exe -> Drivers 选项卡。

如果您使用的是 64 位操作系统,且 Microsoft Office 是 32 位,则请使用 c:\windows\syswow64\odbcad32.exe -> Drivers 选项卡。

如果您使用的是 64 位操作系统,且 Microsoft Office 是 64 位,则请使用 Run -> odbcad32.exe -> Drivers 选项卡。

ODBC Drivers

如果 MySQL 驱动程序已正确安装,则应如上所示。

  1. 使用 ODBC snap in 创建一个系统 DSN,并在 MySQL 驱动程序列表中选择上述驱动程序,测试连接以查看是否正常工作。

  2. 在 VBA 中创建 ODBC 时请使用相同的参数。

例如:

Driver={MySQL ODBC 5.3 ANSI Driver};Server=localhost;Database=myDataBase;
User=myUsername;Password=myPassword;Option=3;
  1. 一旦确认您可以成功连接到MySQL服务器,那么在注册表中更改驱动程序名称(确保更新两个注册表键),并尝试使用您指定的新名称,例如SQL Server

请记住:对于x32位驱动程序的x64位系统:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBCINST.INI\ODBC Drivers

更改驱动程序名称后可能需要重新启动。


1
伟大的解释 + 1 - Dima Dz
我不明白第六步是什么。第五步不已经足够了吗?我也无法理解第六步中的链接,因为它是英文。 - Pherdindy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接