1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
Option Explicit
' Documentation : http://rp.developpez.com/vb/tutoriels/mysql/
Dim pMySQL As Long
Dim zHostBD As String
Dim zUserBD As String
Dim zPassBD As String
Dim zBaseBD As String
'
'
' Manipulation des pointeurs en Visual Basic
' Les fonctions de l'API Windows sont assez faciles à utiliser avec Visual Basic, car elles ne renvoient pas de pointeurs.
' Mais la grande majorité des fonctions de l'API MySQL renvoient un pointeur, sur une structure ou sur une chaîne de caractères.
' VB ne permet pas de déclarer un pointeur sur une variable.
' Donc si nous avons besoin des champs de la structure renvoyée, ou de la chaîne de caractères, nous devons recopier la zone mémoire qui est pointée, dans une variable.
' Afin d'y parvenir, nous pouvons utiliser ces deux fonctions de l'API windows :
' lstrcpy (lpString1, lpString2) recopie la chaîne qui est à l'adresse lpString2 dans la chaîne lpString1.
' CopyMemory() recopie une zone mémoire dans une autre. Les paramètres sont :
' l 'adresse de la zone mémoire de destination
' l 'adresse de la zone mémoire à recopier
' le nombre d'octets à recopier
Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
'
Dim zBidon As Byte
Private Sub Form_Load()
Form1.Caption = "Connexion Base de Données - MYSQL"
'
' Avant tout chose il est nécessaire d'initialiser l'accès à la DLL. ( libmysql.dll )
' Au retour, pMySQL contient l'adresse de la structure permettant l'interfaçage avec mySQL, ou 0 en cas d'erreur. Il est tout à fait possible d'avoir plusieurs connexions dans le même programme.
pMySQL = mysql_init(0)
'
zHostBD = LOCAL_HOST ' "localhost" ou "127.0.0.1"
zUserBD = "identifiant"
zPassBD = "mot de passe"
zBaseBD = "Nom de la base"
'
ConnexionBaseDonnées
DéconnectionBaseDonnées
End Sub
Private Sub ConnexionBaseDonnées()
' SE CONNECTER A LA BASE DE DONNEES
' mysql_real_connect() ouvre la connexion à la base de données. Les paramètres sont :
' le handle de connexion
' l 'adresse du serveur où mySQL est installé
' le nom de user
' le mot de passe
' le nom de la base de données
' le n° de port (0 indique que l'on utilise le port par défaut)
' le nom du pipe ou le socket qui sera utilisé (habituellement 0)
' des statuts permettant de configurer la connexion (habituellement 0)
' Une valeur de retour nulle indique qu'une erreur s'est produite. Une valeur autre indique que la connexion est ouverte.
If mysql_real_connect(pMySQL, zHostBD, zUserBD, zPassBD, zBaseBD, 0, "", 0) = 0 Then
' la connexion a échoué
'
' Obtenir le code d'erreur
' mysql_errno() renvoie le n° de l'erreur survenue lors du dernier appel à l'API, pour la connexion donnée. Une valeur nulle indique qu'il n'y a pas eu d'erreur.
Dim myErrorCode As Long
myErrorCode = mysql_errno(pMySQL)
'
' Obtenir un message décrivant l'erreur
' mysql_error() renvoie un message décrivant l'erreur survenue lors du dernier appel à l'API, pour la connexion donnée. Un message vide indique qu'il n'y a pas eu d'erreur.
Dim pMyErrorMsg As Long, myErrorMsg As String
pMyErrorMsg = mysql_error(pMySQL)
myErrorMsg = CopieChaine(pMyErrorMsg)
MsgBox "La connexion a échoué." & Chr$(10) & "Code erreur = " & myErrorCode & Chr$(10) & "Message décrivant l'erreur = " & myErrorMsg & Chr$(10) & "pMySQL = " & pMySQL
End
' ...
Else
MsgBox "La connexion a réussi."
End If
End Sub
Private Sub DéconnectionBaseDonnées()
' FERMER LA CONNEXION A LA BASE DE DONNEES
' mysql_close() ferme la connexion à la base de données et libère les ressources allouées lors de la création de la connexion.
mysql_close (pMySQL)
End Sub
Private Function CopieChaine(ByVal adresse As Long) As String
' Voyons comment récupérer une chaîne de caractères qui se trouve à une adresse donnée, à l'aide de lstrcpy() :
Dim ret As String
If adresse > 0 Then
ret = Space(256)
lstrcpy ret, adresse
ret = Trim(ret)
If ret <> "" Then CopieChaine = left(ret, Len(ret) - 1)
End If
End Function |
Partager