通过vb6代码为mysql odbc驱动程序3.51创建DSN在windows 64位系统中不工作
有人能帮我吗,下面的代码vb6在Windows7 32位下运行良好,但在Windows10 32或Windows10 64位下不工作 我为mysql数据库odbc驱动程序3.51创建dsn的vb6代码如下:-通过vb6代码为mysql odbc驱动程序3.51创建DSN在windows 64位系统中不工作,mysql,vb6,odbc,dsn,Mysql,Vb6,Odbc,Dsn,有人能帮我吗,下面的代码vb6在Windows7 32位下运行良好,但在Windows10 32或Windows10 64位下不工作 我为mysql数据库odbc驱动程序3.51创建dsn的vb6代码如下:- Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" (ByVal hwndParent As Integer, ByVal fRequest As Integer,
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)
在Windows 64位系统上,32位版本的DLL位于“C:\Windows\SysWOW64”文件夹中。默认情况下,
SQLConfigDataSource
是从包含64位DLL的“C:\Windows\System32”文件夹加载的,这会导致函数出错
我知道这个文件夹的命名似乎是倒退的,但它确实是如何设计的,并解释了为什么会这样
按如下方式声明函数,然后重试:
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
得知64位文件夹(system32)中有一个名为“ODBCCP32.DLL”的DLL,我很惊讶——但我在电脑上检查了一下,它就在那里。硬编码绝对路径可能会起作用,但也会让我感到不舒服。通常这是没有必要的。我认为作为32位的VB6运行时应该首先尝试从SysWow64加载32位DLL。我很惊讶它会首先找到一个64位的DLL。您在“不工作”部分列出了几个windows变体-写得正确吗?因为您在那里列出了一个32位版本,同时指出这是一个64位问题。(请注意,如果需要,您可以编辑问题的文本)。