begin process at 2008 07 06 01:13:38
1 205 425 membres
7 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CONNEXION À UNE BASE DE DONNÉES MYSQL À L'AIDE DE VISUAL C++


Information sur la source

Catégorie :Base de données Classé sous : mysql, c, basededonnées Niveau : Débutant Date de création : 14/02/2007 Vu / téléchargé: 11 069 / 2 619

Note :
Aucune note

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

Description

MySQL—Visual C++ :
Ce document a pour but de montrer comment exploiter une connexion à une base de données mySQL, en utilisant uniquement l'API fournie avec mySQL au travers d'une application écrite en C++ sous Windows, à l'aide de Visual C++.

Configuration requise :
Ce document se basera sur une petite application exemple écrite avec Visual C++ 6.0 et exploitant une connexion à une base de données MySQL version 5.0.27. L'application exemple peut attaquer des bases MySQL qui résident soit sur la machine locale, soit sur un serveur à travers le réseau (Windows ou Linux) . Dans les deux cas, il faut toujours avoir les bibliothèques clientes et fichiers inclus de MySQL d’une installation MySQL sous Windows  qui faudra ajouter à Visual C++.
Configuration de Visual C++ pour MySQL.
Premièrement il faut copier les fichiers du répertoire  $MYSQL_HOME\include\*.*   d’une installation MYSQL sous Windows et les coller dans le répertoire des   \include\    de Visual C++, par la suite il faut  copier le fichier $MYSQL_HOME\lib\opt\libmysql.lib et le coller dans le repertoire \lib\ de Visual C++. A ce niveau si en écrit du code dont on insere des fonctions de l’API MySQL la compilation réussira mais on aura échec dans phase édition des liens(Link error).

Linking...
mysql.obj : error LNK2001: unresolved external symbol _mysql_close@4
mysql.obj : error LNK2001: unresolved external symbol _mysql_free_result@4
mysql.obj : error LNK2001: unresolved external symbol _mysql_num_fields@4
mysql.obj : error LNK2001: unresolved external symbol _mysql_fetch_row@4
mysql.obj : error LNK2001: unresolved external symbol _mysql_use_result@4
mysql.obj : error LNK2001: unresolved external symbol _mysql_query@8
mysql.obj : error LNK2001: unresolved external symbol _mysql_real_connect@32
mysql.obj : error LNK2001: unresolved external symbol _mysql_init@4
mysql.obj : error LNK2001: unresolved external symbol "void __cdecl sleep(int)" (?sleep@@YAXH@Z)
Debug/a.exe : fatal error LNK1120: 9 unresolved externals
Error executing link.exe.

Pour résoudre ce problème, nous devons intégrer la bibliothèque libmysql.lib dans notre projet. A ce niveau la génération de l’exécutable réussit mais son exécution peut ne pas réussir si on ne possède pas le fichier libmysql.dll car notre exécutable est lié dynamiquement à cette bibliothèque. Ce fichier est fourni avec MySQL et son emplacement dans une installation MySQL est $MYSQL_HOME\lib\opt\libmysql.dll. On doit mettre cette bibliothèque soit dans le répertoire de notre exécutable soit dans le dossier system32 de Windows pour réussir l’édition des liens dynamique que le système effectue lors du chargement d’une application.
Pour ajouter le fichier libmysql.lib dans notre projet nous avons deux méthodes :
1- il suffit de créer un nouveau dossier dans l’arborescence du projet sur l’explorateur de fichiers Visual C++ puis ajouter le fichier libmysql.lib dans ce dossier en choisissant add existing file to folder  sur le menu contextuel du dossier qu’on vient de créer.
2- on cliquant sur le sous menu settings du menu Project on atteint la boite de dialogue “Project Settings “. On choisit le volet Link puis on ajoute libmysql.lib dans la liste Object/Library Modules
  


Conclusion

j'ai pris pas mal de détail, car des tuto dans ce sens j'en vu beaucoup mais il y a tjrs des manque et que les gens n'arrive à executer le code.
pure & simple!!
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   mySQL-VisualC++
    •   a
      •   Debug
        • a.exeTélécharger ce fichier [Réservé aux membres club]155 683 octets
        • libmysql.dllTélécharger ce fichier [Réservé aux membres club]1 519 616 octets
      • a.dspTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 391 octets
      • a.dswTélécharger ce fichier [Réservé aux membres club]Voir ce fichier525 octets
      • libmysql.libTélécharger ce fichier [Réservé aux membres club]35 142 octets
      • mysql.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 025 octets
    • mysql_visual c++.docTélécharger ce fichier [Réservé aux membres club]57 344 octets

Télécharger le zip

  • signaler à un administrateur
    Commentaire de Matt67 le 14/02/2007 22:00:40

    Bonsoir,

    L'histoire de copier les fichiers contenu dans le repertoire include de mysql n'est pas bonne du tout. Il faut ajouter (je ne sais plus comment) a visual le chemin du repertoire des includes de mysql , pareil pour la lib.
    Ton code, avec quelques toutes petites modifications est compilable sous linux.
    Faut juste virer :
    #define __LCC__

    J'ai aussi virer :
    la fonction sleep (qui sert vraiment à rien)
    #include <time.h> (du coup plus besoin)
    #include <conio.h> (a quoi ca sert ?)
    et je crois que c'est tout.

    Matt...

  • signaler à un administrateur
    Commentaire de kimmp le 15/02/2007 11:49:06

    bonsoir, à Matt67
    oui lorsque le programme interroge une base de données locale, c n'est pas la peine de coupier les repertoires include et lib de mysql,il suffit juste de faire integrer leurs chemins dans visual. mais lorsque la base est sur un serveur distant et que mysql n'est pas installé sur la machine local(ce qui n'est pas necessaire)il faut avoir uniquement ces deux repertoires sur la machine locale.moi je prefere de les mettre dans les includes de Visual que de les avoir ailleurs pé integrer leurs chemins dans visual.
    pour inclure ces deux repertoires dans visual il faut aller dans 'Tools->Options' l'onglet 'Directories'
    <conio.h> oui cela n'est pas du tout necessaire.

  • signaler à un administrateur
    Commentaire de ezneti le 23/04/2007 10:29:11

    bonjour,
    j'ai utilisé ce code,la connexion est bien marchée le problème est que les requetes d'insertion ne sont pas prise en compte.
    la creation d'une nouvelle base est acceptée mais la modification ou l'insertion à partir du code ne change rien dans la base.
    veillez me proposer une solution
    merci

  • signaler à un administrateur
    Commentaire de Loki6 le 14/05/2007 14:07:38

    salut,
    pour ma part, j'aurais deux trois petites questions à poser :

    est-il possible de lire dans une base mysql sans avoir de serveur, comme pour une base access par exemple. en effet je dois gérer une base de données pour pocket pc en installant le moins de choses possible sur ce fameux pocket et j'ai déjà tenté une connexion à une base access mais sans succès, problème de compatibilités.

    comment fonctionne le principe de serveur mysql en fait ?

    merci pour vos réponses.

    Loki

  • signaler à un administrateur
    Commentaire de stillfelil le 12/01/2008 13:41:57

    Bonjour
    j'ai les erreurs suivantes:

    c:\program files\microsoft visual studio\vc98\include\mysql_com.h(183) : error C2146: syntax error : missing ';' before identifier 'fd'
    c:\program files\microsoft visual studio\vc98\include\mysql_com.h(183) : error C2501: 'SOCKET' : missing storage-class or type specifiers
    c:\program files\microsoft visual studio\vc98\include\mysql_com.h(183) : error C2501: 'fd' : missing storage-class or type specifiers
    c:\program files\microsoft visual studio\vc98\include\mysql_com.h(358) : error C2065: 'SOCKET' : undeclared identifier
    c:\program files\microsoft visual studio\vc98\include\mysql_com.h(358) : error C2146: syntax error : missing ')' before identifier 's'
    c:\program files\microsoft visual studio\vc98\include\mysql_com.h(359) : error C2059: syntax error : ')'

    Comment résoudre le problème
    Merci

  • signaler à un administrateur
    Commentaire de stillfelil le 12/01/2008 14:13:44

    Bonjour
    Je viens de resoudre le probleme en ajoutant :
    #define my_socket int
    dans mysql_com.h

  • signaler à un administrateur
    Commentaire de stillfelil le 12/01/2008 16:28:53

    Je tiens a remercier infiniment kimmp pour ce tuto

  • signaler à un administrateur
    Commentaire de man_smi le 17/03/2008 12:29:10

    bjr
    ca marche 100%100

    g suivé votre expilcation de a à z/et enfin je suis arrivé à connecter a la base donné Mysql d'apres une longue recherche

    je vous remercie pour votre aide et votre details d'expliquer les choses.  

Ajouter un commentaire

Discussions en rapport avec ce code source

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

Snippets en rapport

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS