OVH Cloud OVH Cloud

SQL4WD Connecter à plusieurs bases

4 réponses
Avatar
Roumegou Eric
Bonjour,

Un truc idiot que je n'ais jamais fait !

Je dois copier des egt entre deux bases mysql.
j'utilise les accès alternatifs (mysql4wd en l'occurrence)
comment gérer les deux connexions et copier de l'une à l'autre ?

un ex de code serait super.

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)

4 réponses

Avatar
Daniel
Salut,
"Roumegou Eric" writes:

Bonjour,

Un truc idiot que je n'ais jamais fait !

Je dois copier des egt entre deux bases mysql.
j'utilise les accès alternatifs (mysql4wd en l'occurrence)
comment gérer les deux connexions et copier de l'une à l'autre ?

un ex de code serait super.



lorsque tu te connectes tu ne déclares pas la base

ensuite pour accèder aux bases il suffit de faire
base.table.rubrique

exemple de code
consql:mysqlconnecte(serveur,login,mdp,"")
consql:mysqlexec("INSERT INTO table2 SELECT * FROM TABLE1",3)


--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)




--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
Emmanuel Lecoester
"Roumegou Eric" a écrit dans le message de
news:
Bonjour,

Un truc idiot que je n'ais jamais fait !

Je dois copier des egt entre deux bases mysql.
j'utilise les accès alternatifs (mysql4wd en l'occurrence)
comment gérer les deux connexions et copier de l'une à l'autre ?

un ex de code serait super.



désolé eric, si tes deux bases nécessitent 2 connexions distinctes c'est
impossible à ma connaissance : la libmysql ne gère qu'un seul contexte de
connexion :-(
Avatar
Daniel
Salut,
"Emmanuel Lecoester" writes:

"Roumegou Eric" a écrit dans le message de
news:
> Bonjour,
>
> Un truc idiot que je n'ais jamais fait !
>
> Je dois copier des egt entre deux bases mysql.
> j'utilise les accès alternatifs (mysql4wd en l'occurrence)
> comment gérer les deux connexions et copier de l'une à l'autre ?
>
> un ex de code serait super.

désolé eric, si tes deux bases nécessitent 2 connexions distinctes c'est
impossible à ma connaissance : la libmysql ne gère qu'un seul context e de
connexion :-(



Ce que tu dis Manu est vrai si tu utilises l'accès en l'état. Il y a
toutefois une alternative qui fonctionne.

Tu dupliques la classe c_mysql4wd en c_mysql4wd2.
Dans c_mysql4wd2 tu changes tous les mysql4wd en mysql4wd2 (il y en A
pour 2 secondes)
Tu fais une copie de mysql4wd.dll en mysql4wd2.dll

Ensuite dans le code de ton projet tu déclares

CONSQL est un c_mysql4wd()
CONSQL2 est un c_mysql4wd2()

consql:mysqlconnecte(serveur,login,password,BASE....)
consql2:mysqlconnecte(serveur,login,password,BASE2...)

L'avantage de cette méthode est que tu as une connexion par base (et
tu peux même être multi-serveur)

sinon si tu es sur le même serveur il reste la méthode
base.tablename.champ qui fonctionne et ne demande aucune modif des
classes.

Pour la duplication de la classe c'est uniquement pour voir que celà
fonctionne, et pour ne pas modifier la classe d'origine...


--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
Roumegou Eric
Daniel avait soumis l'idée :
Salut,
"Emmanuel Lecoester" writes:

"Roumegou Eric" a écrit dans le message de
news:
Bonjour,

Un truc idiot que je n'ais jamais fait !

Je dois copier des egt entre deux bases mysql.
j'utilise les accès alternatifs (mysql4wd en l'occurrence)
comment gérer les deux connexions et copier de l'une à l'autre ?

un ex de code serait super.



désolé eric, si tes deux bases nécessitent 2 connexions distinctes c'est
impossible à ma connaissance : la libmysql ne gère qu'un seul contexte de
connexion :-(





Ah ? Déception ! je n'avais pas encore testé car je m'étais dit : "Il
suffit de déclarer deux objets de classes, et c'est bon"
meme que je m'étais fait la reflexion "un plus par rapport à l'accès
natif". Pas besoin de gérer des sqlchangeconnexion.


Ce que tu dis Manu est vrai si tu utilises l'accès en l'état. Il y a
toutefois une alternative qui fonctionne.

Tu dupliques la classe c_mysql4wd en c_mysql4wd2.


Okay

Dans c_mysql4wd2 tu changes tous les mysql4wd en mysql4wd2 (il y en A
pour 2 secondes)



ça je ne comprends pas pourquoi ? Les méthodes peuvent avoir les mèmes
noms?


Tu fais une copie de mysql4wd.dll en mysql4wd2.dll



Ca c'est Okay.

Merci Daniel de cette solution.

Ensuite dans le code de ton projet tu déclares

CONSQL est un c_mysql4wd()
CONSQL2 est un c_mysql4wd2()

consql:mysqlconnecte(serveur,login,password,BASE....)
consql2:mysqlconnecte(serveur,login,password,BASE2...)



là tu utilises bien le mème nom.


L'avantage de cette méthode est que tu as une connexion par base (et
tu peux même être multi-serveur)

sinon si tu es sur le même serveur il reste la méthode
base.tablename.champ qui fonctionne et ne demande aucune modif des
classes.



C'est entre des bases différentes situées sur des serveurs distants.


Pour la duplication de la classe c'est uniquement pour voir que celà
fonctionne, et pour ne pas modifier la classe d'origine...



Merci Daniel de cette solution.
Je vais peut être aussi utiliser une discussion entre l'accès natif de
Pcsoft et l'accès alternatifs. Cela me paraît plus adapté à ce que je
veux faire.

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)