这是我的问题;在这种情况下,它会提示具有相同连接名称的重复连接:
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();
}
这是我的解决方案:
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-)这是处理这个问题的好方法吗?
2-)您还有其他建议吗?
3-)您认为这是 Qt 的缺点吗?
最佳答案
- --
- 我更喜欢在代码的
static
部分添加数据库连接。不是每次初始化Test
类时都执行。您可以使用setup
函数来处理所有这些工作。 - 不,不是。这是设计使然。通常,您不必在每次创建类实例时都创建/打开新的数据库连接。
关于c++ - 如何在 Qt 中处理数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3803460/