mysql - QSQLDatabase 在每个事务上打开和关闭?

标签 mysql qt

我只有一个与数据库的连接,用于我正在开发的库存应用程序。

我现在正在做的是每次需要对 dB 进行查询时调用 open(),然后执行 close()。

这样做比仅仅打开连接并保持打开状态有什么好处吗?

最佳答案

像这样打开数据库:

QSqlError MainWindow::addConnection(QString host,QString dbName,QString user,QString pw)
{
    QSqlError err;
    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName(host);
    db.setDatabaseName(dbName);
    db.setUserName(user);
    db.setPassword(pw);
    if (!db.open())
    {
        qDebug()<<u8"err";
        err=db.lastError();
        QSqlDatabase db1=QSqlDatabase::database();
        QString name = db1.connectionName();
        QSqlDatabase::removeDatabase(name);
    }
    return err;
}

在 main.app 中:

void addConnections(manage *w)
{
    QSqlError err=w->addConnection("","","","");
    if (err.type()!=QSqlError::NoError)
    {
        qDebug() << "Unable to open connection:" << err;
    }
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    addConnections(&w);
    return a.exec();
}

它可以在一开始就打开。每次你想使用它时,只需这样做:

QSqlQuery query;
query.exec("SELECT * FROM data");

如果你有多个链接,你可以在初始化后添加名称并用名称调用它。

关于mysql - QSQLDatabase 在每个事务上打开和关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54048609/

相关文章:

c++ - Qt从文件中删除一行

mysql - 数字列中的 Asc 顺序

php - 尝试从 mysql 数据库获取用户详细信息时出错

mysql - 和盟Mysql

c++ - 如何使用复选框更改 QGraphicsView 背景

c++ - QWidget 更新事件但没有视觉更新

Java Applet 与 Mysql ExceptionInInitializerError

php - 我的 SELECT COUNT 查询返回一个数组而不是整数

c++ - C++类中非原始静态数据类型的初始化

qt - Qt-Window 一小部分的截图