使用 ODBC 连接器的 VBA/MySQL 问题

Posted

技术标签:

【中文标题】使用 ODBC 连接器的 VBA/MySQL 问题【英文标题】:VBA/MySQL issue using ODBC connector 【发布时间】:2012-03-22 07:57:12 【问题描述】:

我已经为此苦苦挣扎了几天。非常感谢任何帮助。

尝试在 PC 上使用 Excel VBA 连接到 mysql 数据库:

Excel 2007 Windows 7 x64 家庭高级版 MySQL 5.5 MySQL ODBC 连接器 5.1,64 位

在 Excel VBA 中,我引用了 Microsoft ActiveX Objects 2.8 Library。

我用来连接的 VBA 是:

Dim oConn As ADODB.Connection
Public Sub ConnectDB()
    Set oConn = New ADODB.Connection
    oConn.Open "DRIVER=MySQL ODBC 5.1 Driver;" & "SERVER=localhost;" & "DATABASE=test;" & "USER=root;" & "PASSWORD=PWhere;" & "Option=3"
End Sub

每次运行时都会出现错误对话框:“[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified”

MySQL 服务肯定正在运行。

我已使用 Windows 数据源管理器检查 MySQL ODBC 连接器 5.1 是否存在且正确:是的,当我尝试以这种方式创建 DSN 时检查正常。

查看 VBA 项目引用选项,我注意到引用大量不同 ADO 库的选项,包括(多维)选项和库版本 2.0、2.1、2.5、2.6、2.7 和 6.0 - 也许答案就在其中之一?

如果需要更多详细信息,请告诉我。

【问题讨论】:

从未使用过 64 位,所以我不确定此链接是否对您有帮助,但看看是否有帮助? vbforums.com/showthread.php?t=619916 【参考方案1】:

您需要使用 32 位或 64 位版本,具体取决于 Excel 的版本,而不是 Windows。因此,即使您运行 Windows 7 64 位,我相信 Excel 2007 也只有 32 位,因此您需要使用 32 位 mysql 连接器。

另请参阅与您的问题类似的bug report。

【讨论】:

感谢为我工作。此外,由于 MySQL ODBC 5.2 连接字符串有点不同:www.connectionstrings.com【参考方案2】:

当我将我的应用程序移动到具有不同驱动程序版本的其他系统时,我收到了类似的消息 - 看起来拼写错误的驱动程序名称会导致相同的消息。要找到正确的驱动程序名称并使应用程序驱动程序版本独立,我使用以下代码:

    Public Function Get_Driver() As String

    Const HKEY_LOCAL_MACHINE = &H80000002
    Dim l_Registry As Object
    Dim l_RegStr As Variant
    Dim l_RegArr As Variant
    Dim l_RegValue As Variant

    Get_Driver = ""
    Set l_Registry = GetObject("winmgmts:impersonationLevel=impersonate!\\.\root\default:StdRegProv")
    l_Registry.enumvalues HKEY_LOCAL_MACHINE, "SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers", l_RegStr, l_RegArr

    For Each l_RegValue In l_RegStr
        If InStr(1, l_RegValue, "MySQL ODBC", vbTextCompare) > 0 Then
            Get_Driver = l_RegValue
            Exit For
        End If
    Next
    Set l_Registry = Nothing
End Function

【讨论】:

以上是关于使用 ODBC 连接器的 VBA/MySQL 问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 pdo-odbc 连接 php 和 .mdb 的 PHP 问题

如何使用odbc连接数据库?

我出现odbc连接不上的问题

使用 32 位 ODBC 连接的 VSTO 连接

ODBC 连接:“连接已被禁用”

是否可以针对 ODBC 驱动程序连接使用 SQLMAP?