Utilisation de mysql et de borland c++ builder

[Résolu/Fermé]
Signaler
Messages postés
12
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
21 mai 2013
-
Messages postés
30118
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 septembre 2021
-
Bonjour a toutes et a tous,

Voila, je vous écris aujourd'hui car j'ai un gros soucis, je travail depuis plusieurs mois sur un projet de gestion de parking grâce a une IHM (interface homme/machine) et une base de données mysql. au lancement de l'IHM, j'ai une connexion a la base de données qui s'initialise, malheureusement, je voudrais accéder a une seconde fiche qui me permettrai d'afficher les informations de la bdd via la connexion déjà initialisé auparavant, mais je n'y arrive pas, j'ai même essayé de déconnecté la bdd au lancement de la seconde fiche, et de l'initialisé au moment du lancement de la seconde fiche, mais j'ai une erreur E2303 qui m'indique le fichier mysql_com.h, et qu'un nom de type est attendu ligne 291.

j'espère que quelqu'un arrivera a m'aider a trouver la solution.

Je vous souhaite une bonne journée.

BRCY

7 réponses

Messages postés
30118
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 septembre 2021
7 173
À quoi correspond ton erreur E2203 ? Peux tu nous reporter le message d'erreur complet ?

À ta place j'essaierais une démarche progressive, quitte à repartir d'un programme minimal pour faire des tests.

1) Tenter de se connecter à la base, vérifier que la connexion est correcte en contrôlant le type de retour. Si ça ne marche pas vérifie le login, le mot de passe, que la base est accessible depuis un client mysql lancé depuis la même machine etc.

2) Une foisl a connexion établie, fais une requête "simple" et vérifie que tu arrives à récupérer son résultat (par exemple "select 1;").

3) Une fois que tu y parviens, vérifie que tu arrives à interroger une table de ton schéma mysql (par exemple "select * from ma_table;").

4) Enfin tente ta requête finale.

Une fois qu'on aura tranché où ça cloche dans ces 4 étapes on y verra plus clair. Après il faudrait nous en dire un peu plus sur comment marche ton application (où la connexion est ouverte, quand elle est utilisée dans ton programme, etc...). Par exemple si ton programme est un démon (une tâche qui tourne arrière plan), il est important de préserver le file descriptor associé à la connexion au moment où tu démonises ton programme.

Bonne chance
Messages postés
12
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
21 mai 2013

bonjour mamiemando,

merci pour votre réponse, je vais un peu mieux expliquer mon problème.

Sur la "fiche" principal de mon projet, la connexion à la base de données mySQL fonctionne, ainsi que toutes les requêtes SQL que j'ai eu besoins. le problème étant que lorsque je passe sur une seconde "fiche" de mon projet, celle-ci n'a plus de connexion a mySQL (la connexion étant rester sur la première fiche), et c'est en essayant de me connecter a partir de la seconde fiche que j'ai une erreur E2203 sur le fichier de la bibliothèque mysql_com.h m'indiquant qu'un nom de type est attendu.

J'ai essayé cet après midi de passer le pointeur de structure *mysql d'une fiche a une autre et aucun résultat probant pour le moment.

Merci encore de votre réponse.

bonne soirée.

brice13960
Messages postés
30118
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 septembre 2021
7 173
Je pense que c'est un problème un peu similaire à celui que je t'ai indiqué. Déjà histoire de fixer les idées, qu'appelles-tu une "fiche" ? C'est une fenêtre ? Tu utilises une librairie particulière ?

Je ne connais pas trop ton projet, mais j'imagine que tu as un file descriptor ou équivalent dans ta première fiche qui te sert à faire des requêtes à la base. C'est lui que tu dois transmettre à la deuxième "fiche".

Je ne connais pas ton code mais peut être que tes deux fiches peuvent hériter d'une même classe qui stockerait ce file descriptor en tant que membre statique.

Bonne chance
Messages postés
12
Date d'inscription
samedi 20 mars 2010
Statut
Membre
Dernière intervention
21 mai 2013

bonjour mamiemando,

oui, la fiche est une nouvelle fenêtre sous borland c++ builder, et la librairie particulière et mysql.h.

par contre, je vais essayer la transmission de du file descriptor.

je vous tiens bien sur au courant de mon avancement.

Merci encore et bonne journée a vous.

brice13960
Messages postés
30118
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 septembre 2021
7 173
Ok donc d'après ce que je vois ici :
https://lfe.developpez.com/BCBmySQL/

ce que j'appelle file desciptor (c'est ce qu'on aurait sous linux) est apparemment en capsulé dans ton objet MYSQL, c'est donc lui qu'il faut transmettre d'une fiche à l'autre. Donc comme je proposais plus haut, si tes deux fiches héritent d'une même classe qui a un membre statique de type MYSQL, ça devrait marcher.

Bonne chance
Messages postés
459
Date d'inscription
dimanche 27 décembre 2009
Statut
Membre
Dernière intervention
7 décembre 2013
63
un externC{} n'est il pas necessaire??

vas sur le site de MYSQL et cherche "C connector", le C API de connexion a la base MYSQL
Messages postés
30118
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 septembre 2021
7 173
@nar6du14

Non extern "C" sert à importer une fonction C en C++. Neuf fois sur dix c'est inutile si tu inclues le bon header (par exemple <cstdio> au lieu de <stdio.h>, <cstdlib> au lieu de <stdlib.h>, etc...).

Et sinon le mot clé extern sert à déclarer une fonction qui n'est pas déjà déclarée dans un .h, mais qui est implémenté dans un binaire (.o, .so, .a) avec lequel le programme est linké.

Bonne chance