Bonjour à tous,
J'ai un probleme avec la gestion des resultats renvoyés par un 'select' dans un programme en c++ utilisant la biblioteque sqlite3.
Je realise une gestion de d'utilisateurs avec une classe.
Dans cette classe, j'ai un attribut contenant la tete d'une liste chainée d'utilisateurs.
Je réalise ma requete dans une methode de cette classe. Le hic, c'est que comme j'ai pu le voir à plusieurs endroits, je ne peux récupérer mon résultat qu'en faisant appel à une fonction callback.
Je n'arrive pas à faire 'communiquer' la tete de ma liste avec le résultat de mon select.
Je vous met les fonctions principales ici,
definition de la liste et de la classe :
la methode qui fait le select :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 typdef struct Utilisateurs { string nom; struct Utilisateurs *next; } Utilisateurs; class mainWindow : public QMainWindow { public: mainWindow(); void readDb(); private: sqlite3 *m_db; struct Utilisateurs *m_teteListe; };
la fonction ccallback :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 void mainWindow::readDb() { int rc = sqlite3_open("data/db.sqlite", &m_db); if(rc){ fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(m_db)); sqlite3_close(m_db); exit(1); } char *err = 0; string sql; sql = "SELECT nom FROM utilisateurs;"; rc = sqlite3_exec(m_db, sql.c_str(), callback, 0, &err); if(rc != SQLITE_OK) { QMessageBox::critical(this, "qsdfml", QString(err)); sqlite3_free(err); } }
Je n'utilise pas la classe QSql de Qt car j'apprend à me servir de sqlite3 et je voudrais savoir l'utiliser n'importe ou (sans qt par ex).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 static int callback(void *NotUsed, int argc, char **argv, char **azColName) { int i; Utilisateurs *p = NULL, *q = NULL; p = new Utilisateurs; //Et la je voudrais tester si la tete de ma liste est NULL etc.. return 0; }
Merci pour votre aide.
Partager