salut,
est-ce que quelqu'un aurait la gentillesse de me faire un petit tuto pour utiliser une base de donné mysql en c++ avec codeblocks.
j'ai déjà trouver quelque tuto mais j'arrive pas à compiler.
j'comprend pas comment j'dois linker tous les fichier et je ne suis justement pas sur de quel fichier je dois linker.
en utilisant code::blocks 8.02, GNU GCC compiler et mysql++, j'ai beau essayer dans tous les sens, j'arrive toujours au meme resultat.
si je link pas le dll (libmysql.dll)
||=== testMySQL, Release ===| obj\Release\main.o:main.cpp:(.text+0xff)||undefined reference to `__imp___ZN7mysqlpp10ConnectionC1EPKcS2_S2_S2_j'| obj\Release\main.o:main.cpp:(.text+0x14b)||undefined reference to `mysqlpp::Connection::~Connection()'| obj\Release\main.o:main.cpp:(.text+0x1bf)||undefined reference to `mysqlpp::Connection::~Connection()'| ||=== Build finished: 3 errors, 0 warnings ===|
si je link le dll
ld.exe||cannot find -lmysql.dll| ||=== Build finished: 1 errors, 0 warnings ===|
mon code
#include <iostream> #include <mysql++.h> using namespace std; using namespace mysqlpp; int main() { try { char db[] = "testdb"; char host[] = "localhost"; char user[] = "testuser"; char passwd[] = "secret"; Connection c (db, host, user, passwd); if(c) cout << "==> Connected" << endl; } catch (Exception& e) { cout << "==> Error: " << e.what() << endl; } }
qui vient de cet exemple la que déjà, j'ai modifié car j'avais des erreur de définition que je n'ai meme pas compris non plus.
j'ai lu aussi que j'dois avoir un fichier.a (j'ai libmysqlclient.a) fait avec dlltool ou je ne sais quoi mais j'comprend pas trop non plus si ce n'est le fait de le metre dans mon dossier mingw/lib.
mysql++ fournit ce code la sinon
#include "cmdline.h"
#include "printdata.h"
#include <mysql++.h>
#include <iostream>
#include <iomanip>
using namespace std;
int
main(int argc, char *argv[])
{
// Get database access parameters from command line
const char* db = 0, *server = 0, *user = 0, *pass = "";
if (!parse_command_line(argc, argv, &db, &server, &user, &pass)) {
return 1;
}
// Connect to the sample database.
mysqlpp::Connection conn(false);
if (conn.connect(db, server, user, pass)) {
// Retrieve a subset of the sample stock table set up by resetdb
// and display it.
mysqlpp::Query query = conn.query("select item from stock");
if (mysqlpp::StoreQueryResult res = query.store()) {
cout << "We have:" << endl;
for (size_t i = 0; i < res.num_rows(); ++i) {
cout << '\t' << res[i][0] << endl;
}
}
else {
cerr << "Failed to get item list: " << query.error() << endl;
return 1;
}
return 0;
}
else {
cerr << "DB connection failed: " << conn.error() << endl;
return 1;
}
}
mais peut importe ce que j'essaye, j'arrive toujours plus ou moin au meme résultat.
'fin bref, si quelqu'un pouvait m'aider ou faire un petit tuto la dessus pour code::blocks avec du c++, ça serait sympa.
sinon y'a peut etre d'autre bd plus simple à utiliser en c++, j'sais pas trop, j'utilse easyphp et j'trouve mysql asser simple avec, c'est pour ça.
merci
a+
Hors ligne
Il ne faut pas inclure la dll mais la lib .a
Hors ligne
j'dois l'inclure ou aussi ?
si j'la link a la place du dll, j'ai le meme message d'erreur (le premier)
j'suis meme pas sur d'avoir le bon fichier.a en plus.
Hors ligne
Elle se trouve dans quel dossier ta DLL ?
Hors ligne
dans un dossier mysql/bin sans rapport avec code::blocks vu que logiquement, le dll, je le met apres, avec mon programme compilé.
Hors ligne
As tu déjà copié ta DLL dans le répertoire de ton projet ?
car tu doit avoir la DLL lorsque tu compile ton projet
Hors ligne
ça change rien.
d'ailleur avec irrlicht, dll ou pas dans le projet, ça compile sans problème.
Hors ligne
ça dépend si tu a déjà copié ta DLL dans le dossier system32 de windows
car si j'ai bien compris le fonctionnement des Dll et .a (ou .lib) c'est que le .a link ta DLL qui doit se trouver dans ton projet ou dans ton dossier system32
Hors ligne
bah meme, si j'indique dans les options de mon projets, les repertoires dans lequelles se trouve les fichiers, ça devrait etre pareil non ?
dans un sens, ça l'est, j'ai toujours le même problème...
j'vais réinstallé mysql je crois, j'avais juste pris les fichier officiel à dezipper.
j'vais prendre le fichier install.exe et recommencer, j'vois pas ce que j'peux faire d'autre là.
Hors ligne
si tu a besoin je peux de uploader la version que j'utilise
Hors ligne
j'veux bien mais si j'sais pas comment m'en servir, c'est un peu la même chose.
t'utilises du mysql 5 ?
Hors ligne
j'utilise la version 5.0.51b-win32
sinon j'ai aussi le reference manual fr
Hors ligne
j'utilise la meme, c'est pas la peine et le manuel est ici aussi.
si t'as du temps à m'accorder, la seul chose que j'ai envie de te demander, c'est d'essayer mysql++ ne serait-ce que pour savoir si t'y arrive et ensuite me dire comment t'as fait parce que franchement, j'sais pas moi.
sinon tu peux me filler ton ou tes fichier.a pour essayer mais j'y crois pas trop.
vraiment, j'comprend pas, j'ai tous les fichier normalement et j'ai beau linker, indiquer mes dossiers dans mon projets dans tous les sens, j'me retrouve toujours avec ces deux messages d'erreurs.
Hors ligne
Bon Ba je viens de télécharger Mysql++ et le code source marche pas du tout,
donc je te conseille d'utiliser Mysql tout simple qui est assez facile à utiliser
Hors ligne
j'vais essayer un autre API, j'ai celui là aussi dans mes favoris.
d'façon il me faut bien du c++ si j'veux m'en servir avec irrlicht non ?
mysql en soit, c'est pas compliqué avec easyphp mais j'veux essayer de me faire un petit client/serveur pour ajouter du contenu avec irrlicht ensuite. ('fin d'abors juste un petit prog qui communique avec la db qui servira de serveur ensuite pour l'instant)
sinon y'a raknet qui m'interesse mais c'est encore trop compliqué pour moi.
merci d'avoir tester.
Dernière modification par noals (20-06-2008 02:11:10)
Hors ligne
Si tu veut l'utiliser avec irrlicht tu peut prendre mysql en c (sa ferat juste un peux de mélange C/C++)
Hors ligne
et c'est possibile de compiler en utilisant les deux ? Oo
il me faudra bien un warper/wrapper(?) quelque part non ?
Hors ligne
non moi j'utilise les 2 en même temps
Hors ligne
ok, bon ben j'vais essayer alors.
merci
a+
Hors ligne