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

发布于 2024-09-24 22:14:06 字数 1037 浏览 5 评论 0原文

这是我的问题;在这种情况下,它会抱怨具有相同连接名称的重复连接:

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

Here my problem; in such a case it complains about duplicate connections with same connection name:

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

Here my 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-)Is this a good way to handle this problem?

2-)Do you have another suggestion?

3-)Do you think that this is a drawback for Qt?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

酒儿 2024-10-01 22:14:06
  1. --
  2. 我更喜欢在代码的静态部分添加数据库连接。每次初始化 Test 类时不执行。您可以使用 setup 函数来处理所有这些工作。
  3. 不,不是。这是设计使然。通常,您不必在每次创建类实例时都创建/打开新的数据库连接。
  1. --
  2. I would prefer adding the Database connection in a static portion of code. Not executing everytime Test class is initialized. You can have a setup function to handle all that work.
  3. No, it's not. It's by design. Usually you should not have to create/open a new DB connection every time you create a class instance.
Oo萌小芽oO 2024-10-01 22:14:06

只需给您的连接指定不同的名称即可:

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

Just give your connections different names:

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();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文