Bonsoir,
Je dois faire une petite application dans laquelle il faut que je me connecte à une base de données. J'ai crée une base de données avec sqlite et j'aimerai maintenant me connecter dessus. Je reçois toujours une réponse : "Drivers not loaded".
Voici mon code .h :
Et voici mon code .cpp :
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
19
20
21
22
23
24
25 #ifndef DBEDWIGE_H #define DBEDWIGE_H #include <QWidget> #include <QString> #include <QSqlDatabase> #include <QSqlQuery> class dbEdwige: public QWidget { public : // constructor : initialise the database dbEdwige(QString, QString, QString, QString ); [...] private : // function : create connexion to the database void dbConnexion(); // parameters QSqlDatabase d_db; QString d_host, d_dbname, d_username, d_pwd; }; #endif // DBEDWIGE_H
Dans mon main :
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 #include "dbEdwige.h" #include <QString> #include <QApplication> #include <QSqldatabase> #include <QSqlquery> #include <QMessageBox> #include <QSqlError> #include <QSqlDriver> #include <QSqlDriverPlugin> // constructor : initialise the database dbEdwige::dbEdwige(QString host, QString dbname, QString username, QString pwd ): QWidget(), d_host(host), d_dbname(dbname), d_username(username), d_pwd(pwd) { dbConnexion(); } [...] // function : create connexion to the database void dbEdwige::dbConnexion() { d_db.addDatabase("QSQLITE"); d_db.setHostName(d_host); d_db.setDatabaseName(d_dbname); d_db.setUserName(d_username); d_db.setPassword(d_pwd); if ( !d_db.open() ) { QMessageBox::warning(this, "Erreur Ouverture", d_db.lastError().text()); } else { QMessageBox::information(this, "Bonne Ouverture", "Connexion BD Ok!"); } }
Est-ce qu'il y a une erreur dans mon code ?
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 #include "dbEdwige.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); QString host = "localhost"; QString dbname = "dbEdwige.db"; QString username = "root"; QString pwd = ""; dbEdwige w(host, dbname, username, pwd); w.show(); return a.exec(); }
Je ne suis pas sûre d'avoir bien créé ma base de données :
J'ai en fait executé dans la console : sqlite3 /dbEdwige.sqlite
Puis j'ai fait mes "CREATE [...]"
Comme QT veut des fichiers .db j'ai modifié mon fichier .sqlite en .db.
Est-ce que cela peut venir de là ?
Merci de bien vouloir m'aider (cela fait maintenant environ 10h que j'essaye de trouver une solution!).
Partager