欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

十四、Qt数据库操作之事务

程序员文章站 2024-01-14 09:29:10
...

案例如下

void transactionDemo()
{
    QSqlDatabase conn = QSqlDatabase::addDatabase("QMYSQL");
    conn.setHostName("localhost");
    conn.setPort(3306);
    conn.setDatabaseName("qt_db");
    conn.setUserName("root");
    conn.setPassword("root");

    if (!conn.open())
    {
        QMessageBox::critical(this, "错误", "连接数据库失败,错误信息如下\n" + conn.lastError().text(),
                              QMessageBox::Ok, QMessageBox::NoButton);
        return;
    }
    //如数据库驱动支持事务
    if (conn.driver()->hasFeature(QSqlDriver::Transactions))
    {
        //开启事务
        conn.transaction();
        //更新数据库操作
        bool result = updateDb();
        if (result)
            //提交事务
            conn.commit();
        else
            //回滚事务
            conn.rollback();
    }
}

若数据库驱动不支持事务,则可使用下面方法开启事务:

QSqlQuery query 
query.exec(“START TRANSACTION”) 
query.exec(“COMMIT”); 
query.exec(“ROLLBACK”); 

备注:暂时查询到的是Qt5.12版本,支持 MYSQL 事务处理

相关标签: QT