Voici mon problème; dans un tel cas, il se plaint de connexions en double avec le même nom de connexion:Comment gérer les connexions de base de données dans Qt?
Test::Test(QString connectionName)
{
db=QSqlDatabase::addDatabase("QMYSQL",connectionName);
}
int main(int argc, char *argv[])
{
QString connectionName=QString("test");
QCoreApplication a(argc, argv);
Test myDb(connectionName);
Test myDb2(connectionName);
return a.exec();
}
Voici ma solution:
Test::Test(QString connectionName)
{
if(!QSqlDatabase::contains(connectionName))
db=QSqlDatabase::addDatabase("QMYSQL",connectionName);
else
db=QSqlDatabase::database(connectionName);
}
int main(int argc, char *argv[])
{
QString connectionName=QString("test");
QCoreApplication a(argc, argv);
{
Test myDb(connectionName);
Test myDb2(connectionName);
}
QSqlDatabase::removeDatabase(connectionName);
return a.exec();
}
1-) Est-ce une bonne façon de gérer ce problème?
2-) Avez-vous une autre suggestion? 3-) Pensez-vous que cela soit un inconvénient pour Qt?
Pour 2: Et si j'ai des classes séparées qui utilisent même nom de connexion pour la base de données se connecter? – metdos
Pour 3: je lui ressemble à variable globale, est-ce une sorte de mauvais usage, n'est ce pas? – metdos
@metdos: Pour 2: vous pouvez passer le handle de la BD au lieu de passer le nom de la connexion. Ou, passez le nom de la connexion, mais ne l'ajoutez pas, récupérez simplement la connexion par son nom à partir de QSqlDatabase. –