MySQL en réseau local ???

cs_globule Messages postés 327 Date d'inscription mardi 8 octobre 2002 Statut Membre Dernière intervention 6 octobre 2010 - 23 juin 2006 à 14:35
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 24 juin 2006 à 15:53
Bonjour,

 Je voudrais utiliser MySQL en réseau avec ADO et VB6

On m’a déjà bien aidé ce matin sur ce forum en m'indiquant le code ci dessous.
Cependant je me pose deux interrogations.

J'ai plusieurs postes sur un réseau LOCAL (pas internet)
J'ai installé MySQL server 5 sur mon poste et le driver connector-odbc-3.51.12
Mes postes sont partagés.

Comment transformer ce code (adapté au serveur), pour qu'il fonctionne sur un poste client : En gros, que faut il indiquer dans
"SERVER=??????;"
Il faut que cela soit simple, car mes clients ne sauront pas indiquer une adresse IP

De plus comment integrer la gestion des transactions dans ce code (pour éviter que ça plante en réseau)

Enfin, faut il modifier quelque chose pour prendre en charge la gestion innoDB (sachant que j'ai installé la dernière version de MySQL sur tous les postes)

Merci








Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset




Private Sub Command1_Click()
   
   
    'For Cpt = 0 To 5
       Set rs = New ADODB.Recordset
       
       rs.Open "INSERT INTO INSCRIPTION(NOM,POSTNOM) values('" + Text1.Text + "','" + Text2.Text + "' )", conn, adOpenStatic, adLockOptimistic
   
       'rs.Close
       Set rs = Nothing
    'Next
    MsgBox "terminé"
   


    
End Sub


Private Sub Form_Load()
    Set conn = New ADODB.Connection
    
    conn.CursorLocation = adUseClient
    conn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" _
            & "SERVER=localhost;" _
            & "DATABASE=MABASE;" _
            & "UID=root;" _
            & "PWD=monpassword;" _
            & "OPTION=" & 1 + 2 + 8 + 32 + 2048 + 16384
 
    conn.Open


End Sub


Private Sub Form_Unload(Cancel As Integer)
    ' Fermeture de la base
    conn.Close
    Set conn = Nothing
End Sub

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
23 juin 2006 à 19:05
Salut
Plusieurs problèmes :
- Ta connexion au poste serveur :
Le serveur est le nom sur le réseau ethernet (et pas internet comme tu le dis).
L'appellation standard est l'adresse IP de cette machine.
Tu peux aussi utiliser l'appellation UNC de la machine, c'est à dire le nom de baptème tel que défini dans les paramètres réseau (exemple : PC582)

Si tu peux faire tourner un programme sur ta machine Serveur, regarde cette source (clique ici) qui permet de rechercher l'adresse IP de la machine qui héberge ton serveur.

- MySQL :
De mémoire, dans le paramétrage du serveur MySQL, il faut mettre en commentaire ou supprimer la ligne "bind", ce qui permet au serveur de répondre à n'importe quelle machine et pas seulement à celle désignée comme administratrice.
Si ta connexion depuis une machine externe au serveur ne fonctionne pas, modifie ce paramètre + Fais des recherches de MySQL dans le forum.

- Ton code :
Pour faire un Insert Into (ou un Delete), il ne faut pas utiliser de RecordSet.
Simplement   maConn.Execute
Info que tu aurasi trouvé dans n'importe quelle source du site parlant de ADO.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
cs_globule Messages postés 327 Date d'inscription mardi 8 octobre 2002 Statut Membre Dernière intervention 6 octobre 2010
23 juin 2006 à 19:18
Merci beaucoup




Mais ou trouve t'on cette appellation UNC ?
Car j'ai essayé le nom de mon serveur que je trouve sur le réseau (XP), mais ca ne fonctionne pas.


Par exemple, si à partir d’un poste client je vois sur le réseau « POSTE52 »


J’essaye "SERVER= POSTE52;"


Mais ca ne fonctionne pas


Si j’essaye avec l’IP du POSTE52, ça fonctionne
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 juin 2006 à 15:44
Non, renseigne toi sur la conversion UNC - nom de disque/volume - IP.
L'appellation UNC s'emploie comme ceci :    Chemin = "\\NomUNC\NomDisque\Sous-Répertoire\Fichier

Regarde aussi du côté du "voisinage réseau" dans la recherche des codes sur vbfrance. Des choses bien intéressantes, comme celle-ci : clique ici.

As-tu regardé la source du 'chercheur automatique de serveur' que je t'ai proposée ?
Elle pourrait répondre à ta demande si tu peux faire tourner en permanence un petit exe 'balise' sur le poste qui héberge la DB à laquelle tu dois accéder.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 juin 2006 à 15:52
En explicatif de ce 'chercheur automatique de serveur' :
Le principe :
Chercher un serveur en envoyant une requète sur tous les ports X de toutes les machines du réseau (X est un port de 1 à 65535 convenu d'avance)
Une fois que le serveur a reçu cette demande (car il est en écoute sur ce port X), il répond à l'expéditeur (le client). Dans sa réponse, il y a son adresse IP.
Facile ensuite au client d'utiliser cette adresse pour se connecter

Par souci d'assurance, le serveur ne répond que si dans la demande il y a un mot clé comme son propre nom d'application. Comme ça on est sûr que ce n'est que notre serveur qui répondra.

C'est le système utilisé par les jeux en réseau pour s'auto-détecter.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accro
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
24 juin 2006 à 15:53
(après j'arrête)
Cette technique a l'avantage de ne rien demandé à l'utilisateur, le client trouvant son serveur automatiquement.
0
Rejoignez-nous