Connection permanente?

warzazel Messages postés 3 Date d'inscription lundi 8 décembre 2003 Statut Membre Dernière intervention 8 décembre 2003 - 8 déc. 2003 à 11:08
warzazel Messages postés 3 Date d'inscription lundi 8 décembre 2003 Statut Membre Dernière intervention 8 décembre 2003 - 8 déc. 2003 à 13:37
Bonjour à tous,

J'ai créé une application VB me permettant de synchroniser les datas de mon Palm avec une bdd distante MySQL.
Mon appli VB est constituée de plusieurs modules avec plusieurs fonctions.
Je dois accéder aux bdd à de nombreux endroits dans mon code et j'aimerais donc pouvoir ouvrir une connection une seule fois en début de programme.
Le hic c'est que je ne sais pas du tout comment faire.

J'utilise ADODB.

En fait j'aimerais faire ceci une seule et unique fois pour tout mon projet. Comment puis-je faire svp???

Dim DBF_PALM_conn As New ADODB.Connection
DBF_PALM_conn.ConnectionString = "Driver={Microsoft Visual FoxPro Driver};" & "SourceType=DBF;" & "SourceDB=" & TableFilename_PALM & ";" & "Exclusive=No"
DBF_PALM_conn.Open

Merci pour vos réponses?

3 réponses

warzazel Messages postés 3 Date d'inscription lundi 8 décembre 2003 Statut Membre Dernière intervention 8 décembre 2003
8 déc. 2003 à 12:33
Je suis réellement débutant en VB alors peut etre me suis-je mal exprimé.

En fait, je cherche juste à savoir comment ouvrir une connection ADODB permanente, une fois pour toute dans un projet VB ; sans avoir à redéclarer et à faire des "conn.open" dans chacune des fonctions, de tous mes modules?

J'espère que je me fais comprendre.

Peut etre pourriez vous m'indiquer l'URL d'un site qui pourrait m'être utile...
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016
8 déc. 2003 à 13:25
salut,

en fait je repondrai par une question :
comment accedes tu a ta BDD?
si tu utilises des DataReader et que tu souhaites reellement laisse ta conexion ouverte (c est un comble pour un modele deconnecte...) il suffit de l 'ouvrir apres linstanciation (comme tu le fais) et de la fermer a la fermeture de ton appli!

si tu utilises des DataAdapters, ils ouvrent la connexion si necesaire et la laisse dans l etat dans lequel ils l ont trouve. donc si tu utilises plusieurs DA a la suite il vaut mieux controler l ouverture et la fermeture pour eviter des etats OPEN/CLOSED repetitifs.

Avec les DataAdapter :
'pour eviter les ouvrir/fermer
cnx.Open()
da1.fill(...)
da2.fill(...)
da3.Fill(...)
cnx.Close()

'pour laisser faire
Dim cnx as New ...
'
'code...
'
da1.Fill(...)
'
'code...
'
da2.Fill(...)

'pour laisser la connexion ouverte
Dim cnx as New ...
cnx.Open()
da1.fill(...)
'
'code...
'
da2.Fill(...)
'
'code
'
cnx.Close()

[ Dalida ]
0
warzazel Messages postés 3 Date d'inscription lundi 8 décembre 2003 Statut Membre Dernière intervention 8 décembre 2003
8 déc. 2003 à 13:37
En fait j'aimerais ouvrir une seule et unique fois ma bdd en debut de programme pour une raison de praticité.
Sinon je vais devoir appeler mes fonctions conn.open un certain nombre de fois!!!

En fait, j'ai un module principal, qui appelle d'autres fonctions situées dans des fichiers .bas.
Ces fonctions ont besoin d'accéder à mes bases de données : fichier local DBF et base distante MYSQL.

J'utilise cette syntax pour les ouvrir :

'FICHIER PALM local
Dim DBF_PALM_conn As New ADODB.Connection
DBF_PALM_conn.ConnectionString = "Driver={Microsoft Visual FoxPro Driver};" & "SourceType=DBF;" & "SourceDB=" & TableFilename_PALM & ";" & "Exclusive=No"
DBF_PALM_conn.Open


'database MySQL distante
Dim MYSQLconn As New ADODB.Connection
MYSQLconn.ConnectionString = "DRIVER={MySQL ODBC 3.51 Driver};" & "SERVER=xxx.xxx.xxx.xxx;" & "DATABASE=logicare2;" & "UID=user;PWD=PASSWD; OPTION=3"
MYSQLconn.Open


Le problème, si je défini ceci dans mon module principal, dans les autres modules, MYSQLconn et DBF_PALM_conn sont vides! Je suis donc obligé de redéclarer chaque connection dans chaque module.

J'aimerai pouvoir ouvrir les connection en debut de programme et les refermer automatiquement quand la synchronisatin est finie.

Seulement je ne sais pas comment mettre en GLOBAL MYSQLconn.Open (par exemple).

J'a bien essayé de créer un module à part ou je défini par ex . : Global MYSQLconn = New ADODB.Connection

suivi, dans une fonction main (de départ) de la fonction d'ouverture, mais dans mes autres modules, MYSQLconn a une valeur nulle.

Je ne sais pas si je suis très clair..désolé.
0
Rejoignez-nous