la base de bonne sur qt
-
Est-ce que la librairie client de MySQL est trouvable au travers de la variable d'environnement PATH ? Celle-ci peut être modifiée dans Qt Creator, dans les paramètres d'exécution du projet.
Dans tous les cas, démarrer l'application avec la variable d'environnement QT_DEBUG_PLUGINS à 1 permet d'avoir plus d'information sur ce qui se passe.
-
@SGaist Merci pour votre réponse
Il m'affiche plusieurs infos mais c'est ça qui nous intéresse nonqt.core.plugin.factoryloader: Got keys from plugin méta data Qlist("QPSQL") qt.core.plugin.factoryloader: checking directory Pathé "A:/Qt-Projet/build-Pd-Desktop_Qt_6_6_0_MinGW_64_bit-Debug/debug/sqldrivers" ...
QSqlDatabase: QMYSQL driver loaded QSqlDatabase :available drivers: QSLITE QMIMER QODBC QPSQL
Mais si je copie le dll
C:/Qt/6.6.0/src/windows/plugins/sqldrivers/qsqlmysql.dll
sur
C:\Qt\6.6.0\mingw_64\plugins\sqldrivers
ça m'affiche
qt.core.plugin.factoryloader: Got keys from plugin meta data QList("QPSQL") qt.core.plugin.factoryloader: checking directory path "A:/Qt-Projet/build-Pd-Desktop_Qt_6_6_0_MinGW_64_bit-Debug/debug/sqldrivers" ... qt.core.library: "C:/Qt/6.6.0/mingw_64/plugins/sqldrivers/qsqlmysql.dll" cannot load: Impossible de charger la bibliothèque C:\Qt\6.6.0\mingw_64\plugins\sqldrivers\qsqlmysql.dll : %1 n’est pas une application Win32 valide. qt.core.plugin.loader: QLibraryPrivate::loadPlugin failed on "C:/Qt/6.6.0/mingw_64/plugins/sqldrivers/qsqlmysql.dll" : "Impossible de charger la bibliothèque C:\\Qt\\6.6.0\\mingw_64\\plugins\\sqldrivers\\qsqlmysql.dll : %1 n’est pas une application Win32 valide." QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMIMER QMARIADB QMYSQL QODBC QPSQL
Merci
-
C'est cette étape de copie qui manquait.
Il faut compiler le plugin pour debug et release et les copier ensuite.
-
Pour autant que je me souvienne correctement, cmake ne fait pas les deux compilations en même temps.
Pour assurer de tout avoir, je recommande de faire un second build avec
-DCMAKE_BUILD_TYPE=Debug
ajouté lors de la configuration. -
@SGaist Merci pour votre réponse
Le voici ça m'a surpris#include "qsqldatabase.h" #include <QApplication> #include <QMessageBox> int main(int argc, char *argv[]) { QApplication a(argc, argv); QMessageBox message; QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); //db.setDatabaseName("test"); db.setUserName("WinAdmin"); db.setPassword("MySQL@2022"); bool ok = db.open(); if(ok) { message.information(nullptr, "Message", "Base de bonne charger"); } else { message.critical(nullptr, "erreur", "Impossible d'ouvrire"); } return a.exec(); }
C:/Qt/6.6.0/mingw_64/include/QtCore/qmetatype.h\u0000qRegisterNormalizedMetaType was called with a not normalized type name, please call qRegisterMetaType instead
Je crois que le problème viens de la
-
@Fortiga said in la base de bonne sur qt:
@SGaist Merci pour votre réponse
Le voici ça m'a surprisJe crois que le problème viens de la
Cette fois-ci, il manque des données :-D
-
QML n'a pas d'accès direct pour les bases de données. Par contre ce qu'il est possible de faire est de créer un model basé sur QSqlTableModel par example pour accéder aux tables nécessaire. Mais cela dépend de ce que doit faire la partie QML.
-
@SGaist Merci pour votre réponse 😊
Une dernière question
Dans mon code je peux pas définir le nom de la base de données#include "qsqldatabase.h" #include <QApplication> #include <QMessageBox> int main(int argc, char *argv[]) { QApplication a(argc, argv); QMessageBox message; QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL" , "DATABASE"); db.setHostName("localhost"); db.setDatabaseName("test"); db.setUserName("WinAdmin"); db.setPassword("MySQL@2022"); bool ok = db.open(); QString ad = db.databaseName(); QString fr = db.connectionName(); if(ok) { message.information(nullptr, "Message", "Base de bonne charger"); message.information(nullptr, fr, ad); } else { message.critical(nullptr, "erreur", "Impossible d'ouvrire"); }
Ça m'affiche des erreurs genre
Mais si j'efface
#include "qsqldatabase.h" #include <QApplication> #include <QMessageBox> int main(int argc, char *argv[]) { QApplication a(argc, argv); QMessageBox message; QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL" , DATABASE"); db.setHostName("localhost"); //db.setDatabaseName("test"); db.setUserName("WinAdmin"); db.setPassword("MySQL@2022"); bool ok = db.open(); QString ad = db.databaseName(); QString fr = db.connectionName(); if(ok) { message.information(nullptr, "Message", "Base de bonne charger"); message.information(nullptr, fr, ad); } else { message.critical(nullptr, "erreur", "Impossible d'ouvrire"); } return a.exec(); }
Ça marche
Je pige pas -