Создание DSN через код vb6 для mysql odb c драйвера 3.51, не работающего в windows 64 бит - PullRequest
1 голос
/ 08 января 2020

Кто-нибудь может мне помочь, следующий код vb6 работает нормально в windows 7 32 бит, но не работает в windows 10 32 или windows 10 64 бит.

Мой код vb6 для создания DSN для mysql odb базы данных c Драйвер 3.51 выглядит так: -

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)

1 Ответ

1 голос
/ 09 января 2020

В Windows 64-битных системах 32-битные версии DLL находятся в папке "C: \ Windows \ SysWOW64" . По умолчанию SQLConfigDataSource загружается из папки "C: \ Windows \ System32" , которая содержит 64-разрядные библиотеки DLL, что вызывает ошибку функции.

Я знаю, что это именование папок кажется задом наперед, но оно действительно так, как оно задумано, и это объясняет, почему это так.

Объявите функцию следующим образом и попробуйте:

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
...