通过vb6代码为mysql odbc驱动程序3.51创建的DSN在Windows 64位中不起作用

问题描述 投票:0回答:1

[任何人都可以帮我,以下代码vb6在Windows 7 32位中运行正常,但在Windows 7 32或Windows 10 64位中运行不正常。

我的用于mysql数据库odbc驱动程序3.51的dsn创建的vb6代码如下:-

Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" (ByVal hwndParent As Integer, ByVal fRequest As Integer, 
                                                             ByVal lpszDriver As String, ByVal lpszAttributes As String) As Integer

Dim Attr as string

 Attr = "SERVER=localhost" & Chr(0)
        Attr = Attr & "DSN=ABC" & Chr(0)
        Attr = Attr & "DESCRIPTION=DSN For ABC" & Chr(0)
        Attr = Attr & "DATABASE=mysqltestdb" & Chr(0)
        Attr = Attr & "User=root" & Chr(0)
        Attr = Attr & "Password=abctest" & Chr(0)
        Attr = Attr & "option=2" & Chr(0)
        iReturn = SQLConfigDataSource(0, 1, "MySql ODBC 3.51 Driver", Attr)
mysql vb6 odbc dsn
1个回答
0
投票

在Windows 64位系统上,32位版本的DLL位于“ C:\ Windows \ SysWOW64”文件夹中。默认情况下,SQLConfigDataSource是从包含32位DLL的“ C:\ Windows \ System32”文件夹加载的,这会导致函数出错。我知道这似乎是倒退,但实际上是它的设计方式,this解释了为什么会这样。

如下声明函数,然后尝试:

Private Declare Function SQLConfigDataSource _ 
Lib "C:\Windows\SysWOW64\ODBCCP32.DLL" (ByVal hwndParent As Integer, _ 
                                        ByVal fRequest As Integer, _ 
                                        ByVal lpszDriver As String, _ 
                                        ByVal lpszAttributes As String) As Integer
© www.soinside.com 2019 - 2024. All rights reserved.