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

标签 c++ qt database-connection mysql-management database-management

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

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. 不,不是。这是设计使然。通常,您不必在每次创建类实例时都创建/打开新的数据库连接。

关于c++ - 如何在 Qt 中处理数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3803460/

相关文章:

postgresql - 如何通过一个单一的操作从生产数据库中克隆测试数据库?

mysql - 为什么在 Linux 中尝试使用 bash 脚本从 MySQL 数据库检索数据时出现此错误?

c++ - 难以将函数转换为单个方程 (constexpr)

c++ - 使 visual studio 编译,以便最终用户不需要 c++ 运行时库

C++ setprecision(2) 打印一位小数?

c++ - 有没有简单的方法来制作可折叠的 QWidget?

c++ - 传递参数为 `const` 的奇怪效果

c++ - 从 .SVG 文件创建 QIcon 后为空

c++ - Qt:如何处理源自 Qt 类内部的崩溃?

php - 你如何在 php 中管理数据库连接?