QSQLDatabase是否在每个事务上打开和关闭?

时间:2019-01-05 03:03:12

标签: mysql qt

我与数据库具有单一连接,可用于正在开发的清单应用程序中。

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

这样做有什么好处,而不仅仅是打开连接并保持打开状态?

1 个答案:

答案 0 :(得分:0)

像这样打开数据库:

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");

如果有多个链接,则只需在初始化后添加名称,然后使用名称进行调用即可。