这是我的问题;在这种情况下,它会抱怨具有相同连接名称的重复连接:
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的缺点吗?
答案 0 :(得分:1)
static
部分代码中添加数据库连接。每次Test
类初始化时不执行。您可以使用setup
函数来处理所有工作。答案 1 :(得分:0)
只需给你的连接命名不同:
int main(int argc, char *argv[])
{
QString connectionName("test");
QString connectionName2("test2");
QCoreApplication a(argc, argv);
Test myDb(connectionName);
Test myDb2(connectionName2);
return a.exec();
}