Créer un dsn(open database connectivity) pour mysql par le code

Description

Cet exemple est dérivé de l'article paru ici :
http://support.microsoft.com/default.aspx?scid=KB;EN-US;q184608&,
Qui explique comment créer un DSN pour sql Server.

En utilisant les drivers MyODBC : http://www.mysql.com/downloads/api-myodbc-2.50.html,
on peut faire la même chose avec un serveur sous mySQL...

amusez vous bien !! A+

Source / Exemple :


Option Explicit

    Private Const REG_SZ = 1    'Constant for a string variable type.
                                'elle est bonne !!!
                                
    Private Const HKEY_LOCAL_MACHINE = &H80000002
    
    
    Private Declare Function GetSystemDirectoryA _
    Lib "kernel32" _
        (ByVal lpBuffer As String, _
        ByVal nSize As Long) As Long
    '----
    Private Declare Function RegCreateKey _
    Lib "advapi32.dll" Alias "RegCreateKeyA" _
        (ByVal hKey As Long, _
        ByVal lpSubKey As String, _
        phkResult As Long) As Long
    '----
    Private Declare Function RegSetValueEx _
    Lib "advapi32.dll" Alias "RegSetValueExA" _
        (ByVal hKey As Long, _
        ByVal lpValueName As String, _
       ByVal Reserved As Long, _
       ByVal dwType As Long, _
       lpData As Any, _
       ByVal cbData As Long) As Long
    '----
    Private Declare Function RegCloseKey _
    Lib "advapi32.dll" _
       (ByVal hKey As Long) As Long
    '----
Private Sub cmdCreate_Click()

   Dim sDataSourceName As String, sDatabaseName As String
   Dim sDescription As String, sDriverPath As String, sDriverName As String
   Dim sLastUser As String, sRegional As String, sServer As String

   Dim lResult As Long
   Dim hKeyHandle As Long

   'Permet de spécifier les paramêtres du DSN.
   
   sDataSourceName = txtData(0).Text
   sDatabaseName = txtData(1).Text
   sDescription = txtData(2).Text
   sDriverPath = GetSystemDirectory
   sLastUser = txtData(3).Text
   sServer = txtData(4).Text
   sDriverName = "MySQL"

   'Create the new DSN key.

   lResult = RegCreateKey(HKEY_LOCAL_MACHINE, _
                "SOFTWARE\ODBC\ODBC.INI\" & _
                sDataSourceName, hKeyHandle)

   'défini les valeurs de la nouvelle clé DSN.

   lResult = RegSetValueEx(hKeyHandle, _
            "Database", 0&, REG_SZ, _
      ByVal sDatabaseName, Len(sDatabaseName))
   
   lResult = RegSetValueEx(hKeyHandle, _
            "Description", 0&, REG_SZ, _
      ByVal sDescription, Len(sDescription))
   
   lResult = RegSetValueEx(hKeyHandle, _
                "Driver", 0&, REG_SZ, _
      ByVal sDriverPath, Len(sDriverPath))
   
   lResult = RegSetValueEx(hKeyHandle, _
            "LastUser", 0&, REG_SZ, _
      ByVal sLastUser, Len(sLastUser))
   
   lResult = RegSetValueEx(hKeyHandle, _
            "sServer", 0&, REG_SZ, _
            ByVal sServer, Len(sServer))

   'Ferme la nouvelle clé du DSN.

   lResult = RegCloseKey(hKeyHandle)

   'ouvre la clé de donné source ODBC
   'Pour le mettre dans la liste du DSN manager.
   'spécifie la nouvelle valeur.
   'ferme la clé.

   lResult = RegCreateKey(HKEY_LOCAL_MACHINE, _
      "SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources", _
      hKeyHandle)
   
   lResult = RegSetValueEx(hKeyHandle, _
   sDataSourceName, 0&, REG_SZ, _
      ByVal sDriverName, Len(sDriverName))
   
   lResult = RegCloseKey(hKeyHandle)
End Sub

Private Function GetSystemDirectory() As String
    Dim s As String, i As Integer
    i = GetSystemDirectoryA("", 0)
    s = Space(i)
    GetSystemDirectoryA s, i
    s = Left$(s, i - 1)
    
    ' si pas de backslash...
    If Len(s) > 0 Then
        If Right$(s, 1) <> "\" Then
        GetSystemDirectory = s + "\"
        Else
            GetSystemDirectory = s
        End If
    Else
        GetSystemDirectory = "\"
    End If
End Function

Conclusion :


Je suis près à développer le sujet si ça interesse qq :)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.