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

Soyez le premier à donner votre avis sur cette source.

Vue 8 137 fois - Téléchargée 736 fois

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

Ajouter un commentaire

Commentaires

12_darte_12
Messages postés
18
Date d'inscription
lundi 14 février 2005
Statut
Membre
Dernière intervention
20 mars 2006
-
Merci.

Peut-on supprimer ce même lien une fois qu'il a été créé?
surfzoid
Messages postés
467
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
21 avril 2010
-
si belote tu ne veut pas avoir dans ton gestionnaire ODBC
remplaces
sDriverName = "MySQL"
par
sDriverName = "{MySQL ODBC 3.51 Driver}"
Bien sur si c est bien la version 3.51
Matyouz
Messages postés
28
Date d'inscription
dimanche 27 mars 2005
Statut
Membre
Dernière intervention
27 juillet 2011
-
Idem pour les base Mysql de Lycos (Webcenter) ... Pour alimenter ta base MySql sur ton serveur hébergeur, tu peux faire un script (feuille php par exemple) que tu positionnes sur l'hébergeur et qui se connecte à ton PC pour récupérer les données à initialiser ... il faudra faire quelques configuration au niveau de ton serveur Apache ... c'est le seul moyen !!!!
cs_NoTsu
Messages postés
9
Date d'inscription
vendredi 25 avril 2003
Statut
Membre
Dernière intervention
12 mai 2006
-
Sur FREE toutes les bases ne sont accessible que depuis ton compte free, c'est une restriction de free sur ses bases , donc aucun programme tel qu'il soit ne pourra passer outre cette protection des bases Free.
En gros, les bases FREE tu peux les utilisaer que avec des scripts hébergé sur le serveur FREE.
rclsilver02
Messages postés
132
Date d'inscription
mercredi 19 mars 2003
Statut
Membre
Dernière intervention
10 février 2012
-
est ce que grace a ce programme, on peut se connecte a une base de donne Free (sql.free.fr) et ajouter des champs dans les tables, en supprimer, en lire, enfin tout ça quoi ? Si oui comment stp

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.