Tom's Guide > Forum > Programmation > [C++] probleme du driver SQL
Mot :    Pseudo :           
 

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 :

 


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

Lorsque je compile le compilateur affiche :

 
Code :
  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


Message édité par Capry le 18-03-2009 à 13:32:50
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

mysqlcppconn.lib est inclue dans ta librairie?

------------------------------ En Restaurant, le coeur de breizh
Répondre à Tybbow

Non, je ne l'ai pas inclus.
Où puis-je trouver cette librairie ?

Répondre à Capry

>>>ICI<<<

Je ne suis pas certains que ton problème peut provenir de là, mais autant essayer :)

------------------------------ En Restaurant, le coeur de breizh
Répondre à Tybbow

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

 

Au revoir


Message édité par Capry le 18-03-2009 à 13:32:45
Répondre à Capry

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

 


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


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


Message édité par Capry le 18-03-2009 à 13:33:52
Répondre à Capry

Sur

Code :
  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.

------------------------------ En Restaurant, le coeur de breizh
Répondre à Tybbow

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

Et pour les std j'ai plus ciblé :

Code :
  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 :

Code :
  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: ...

Répondre à Capry

Code :
  1. stmt = con.createStatement();



Peut être, tout simplement ^^

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

------------------------------ En Restaurant, le coeur de breizh
Répondre à Tybbow

Ton application a crashé (lecture ou écriture hors zone de ton processus).
Quand on fait ceci:

Code :
  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.

Code :
  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. }


------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

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à.

Répondre à Capry

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 ?


Message édité par CRicky le 19-03-2009 à 20:57:34
------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Tom's Guide > Forum > Programmation > [C++] probleme du driver SQL
Aller à :

Il y a 2465 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens