繁体   English   中英

如何在Qt中处理数据库连接?

[英]How to Handle Database Connections in 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();
}

我的解决方案:

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的缺点吗?

  1. -
  2. 我宁愿在代码的static部分添加数据库连接。 每次初始化Test类时都不执行。 您可以使用setup功能来处理所有工作。
  3. 不,这不对。 这是设计的。 通常,每次创建类实例时都不必创建/打开新的数据库连接。

只需给你的连接不同的名字:

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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM