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.

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("");
}
Et dans la sortie log, je peux lire:
[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.
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);
}
Cette fonction va être appelée par un thread secondaire. Et lorsque je lance le thread je peux lire dans la sortie log
[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

Code : Sélectionner tout - Visualiser dans une fenêtre à part
qx::QxSqlDatabase::getDatabase().connectionNames()
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.


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