Bonjour, je viens de tester cette bibliothèque, qui est vraiment très simple d'utilisation pour une petite base de données perso sous linux debian. Du beau travail et notamment au point de vue de la documentation.
Mais il semblerait qu'il ait encore une chose que je ne comprend pas
J'ai une classe DBInterface possédant une fonction statique qui initialise la base de données.
Cette fonction est appelé par le thread principal.
Et dans la sortie log, je peux lire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void QDABInterface::initDB() { qx::QxSqlDatabase::getSingleton()->setDriverName("QSQLITE"); qx::QxSqlDatabase::getSingleton()->setDatabaseName("db/blablabla.sqlite"); qx::QxSqlDatabase::getSingleton()->setHostName("localhost"); qx::QxSqlDatabase::getSingleton()->setUserName("root"); qx::QxSqlDatabase::getSingleton()->setPassword(""); }
[QxOrm] qx::QxSqlDatabase : create new database connection in thread '0x7f6698d02800' with key '{e8cb1e1f-60fa-457d-b328-429ee9b3c3e8}'
Dans cette classe j'ai une autre fonction saveBlabla.
Cette fonction va être appelée par un thread secondaire. Et lorsque je lance le thread je peux lire dans la sortie log
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void QDABInterface::saveBlaBla() { //BlaBla_ptr est un smart point // Il est effacé de la RAM correctement blabla_ptr bla; bla.reset(new blabla()); qx::dao::insert(bla); }
[QxOrm] qx::QxSqlDatabase : create new database connection in thread '0x7f667a846700' with key '{2a81cdad-552c-4b4e-8af2-b01e14cdf857}'.
Si ce lance ce thread une deuxieme fois.
[QxOrm] qx::QxSqlDatabase : create new database connection in thread '0x7f753a92d800' with key '{a8570e88-789d-41db-9653-8bb7e42222dc}'
Et ces connections s'ajoutent donc puisque si je fais
j'obtiens la liste des connections citées ci-dessus. Et j'obtient des résidus dans ma RAM!! Ce qui a le don de m'agacer fortement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part qx::QxSqlDatabase::getDatabase().connectionNames()
J'aimerais vraiment connaitre la marche à suivre pour pouvoir utiliser les fonctions de qx::dao dans une autre Thread. Merci d'avance et bon dimanche
Amicalement.
Sizain
Partager