Votre question

[C++] probleme du driver SQL

Tags :
  • Sql
  • Programmation
Dernière réponse : dans Programmation
17 Mars 2009 15:17:42

Bonjour,
Je voudrais pouvoir gérer en c++ une base de donnée en SQL. J'ai déjà une bonne expérience en PHP donc le SQL en lui même ne devrait pas trop poser de problèmes...
J'ai donc installé la librairie et fait tout les includes nécessaires, mais lors de la première ligne (eh oui déjà :honte: ) j'ai un problème, voici mon code :


  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <sstream>
  4. #include <stdexcept>
  5. #include <driver/mysql_public_iface.h>
  6.  
  7. using namespace std;
  8.  
  9. int main(int argc, char *argv[])
  10. {
  11. sql::Driver * driver = get_driver_instance();
  12. system("PAUSE");
  13. return EXIT_SUCCESS;
  14. }




Lorsque je compile le compilateur affiche :

  1. [Linker error] undefined reference to `_imp__get_driver_instance'




J'ai beau tourner un rond pendant des heures je ne trouves pas de solutions à ce problème. Est-ce qu'un zéro aurait une idée ?

Merci d'avance,
Capry

Autres pages sur : probleme driver sql

17 Mars 2009 18:26:33

mysqlcppconn.lib est inclue dans ta librairie?
m
0
l
17 Mars 2009 18:36:51

Non, je ne l'ai pas inclus.
Où puis-je trouver cette librairie ?
m
0
l
Contenus similaires
17 Mars 2009 18:45:34

>>>ICI<<<

Je ne suis pas certains que ton problème peut provenir de là, mais autant essayer :) 
m
0
l
17 Mars 2009 19:23:07

Ah je l'avais cherché sans la trouver !
merci beaucoup Tybbow ^^, surtout pour la rapidité des réponses.

Au revoir
m
0
l
18 Mars 2009 13:31:18

J'ai un nouveau problème :S (decidemment cette librairie va m'énerver >_< ), voici mon code :


  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <sstream>
  4. #include <string>
  5. #include <stdexcept>
  6. #include <driver/mysql_public_iface.h>
  7.  
  8. using namespace std;
  9.  
  10. int main(int argc, char *argv[])
  11. {
  12. sql::Driver * driver = get_driver_instance();
  13. std::auto_ptr< sql::Connection > con(driver->connect("127.0.0.1", "Capry", "barbedor"));
  14. std::auto_ptr< sql::Statement > stmt(con->createStatement());
  15.  
  16. system("PAUSE");
  17. return EXIT_SUCCESS;
  18. }



Tout se passe bien à la compilation, aucune erreur signalée mais dès que je l'éxecute :

"SQL.exe à rencontrer un probleme et doit fermer"

Même chose si je ne met pas la troisième ligne sauf que le message ne se met qu'une fois passé le "system("PAUSE");" :S.

Quelqu'un aurait une idée pour résoudre ce problème ? Peut-être une DLL non incluse ?

Merci d'avance
Capry
m
0
l
18 Mars 2009 18:03:54

Sur
  1. int main(int argc, char *argv[])


Il n'y à pas 2 étoiles sur argv? **argv?

Sinon, peut être que le problème vient des std. Il y en a un pour se connecter à la base de donnée et l'autre pour création.

m
0
l
18 Mars 2009 18:58:58

pour les 2 étoiles ça revient au même non o_O ?

Et pour les std j'ai plus ciblé :

  1. sql::Driver* driver;
  2. sql::Connection *con;
  3. sql::Statement *stmt;
  4. driver = get_driver_instance();
  5. con = driver->connect("tcp://127.0.0.1:3306", "Capry", "barberousse");
  6. stmt = con->createStatement();


C'est cette ligne là qui pose problème :
  1. stmt = con->createStatement();


Si elle n'est pas là, aucun problème, dès que je l'insère le programme plante à l'exécution.

Ais-je oublier de mettre une dll concernant la librairie d'où provient cette fonction ??
Et surtout qu'est-ce qu'elle fait exactement parce que tout les tutos sont en anglais je n'ai pas compris le passage là.
Je commmence à perdre la boule :pt1cable:  ...
m
0
l
18 Mars 2009 19:34:07

  1. stmt = con.createStatement();


Peut être, tout simplement ^^

Sinon, je pensais qu'il fallait peut être intégrer un résultat entre ()

m
0
l
a b L Programmation
18 Mars 2009 20:02:45

Ton application a crashé (lecture ou écriture hors zone de ton processus).
Quand on fait ceci:
  1. con = driver->connect("tcp://127.0.0.1:3306", "Capry", "barberousse" );

Après on teste si con n'est pas NULL pour s'assurer qu'il n'y a pas eu d'erreur.
  1. con = driver->connect("tcp://127.0.0.1:3306", "Capry", "barberousse" );
  2. if (!con)
  3. {
  4. // Erreur, il faut quitter avec un joli message
  5. }

m
0
l
18 Mars 2009 20:52:40

Ce n'est pas à cette ligne là que le programme crash, c'est à la ligne suivante. Con n'est pas égale à NULL à ce moment là.
m
0
l
19 Mars 2009 17:40:50

Up please
m
0
l
a b L Programmation
19 Mars 2009 20:57:15

Si con est null, l'exception est déclenchée à la ligne suivante, lorsque tu lis hors zone avec con->...

Le contenu de l'objet semble correct ?
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS