qt sql事務操作


事務是數據庫的一個重要功能,所謂事務是用戶定義的一個數據庫操作序列,這些操作要么全做要么全不做,是一個不可分割的工作單位。在Qt中用transaction()開始一個事務操作,用commit()函數或rollback()函數進行結束。commit()表示提交,即提交事務的所有操作。具體地說就是將事務中所有對數據庫的更新寫回到數據庫,事務正常結束。rollback()表示回滾,即在事務運行的過程中發生了某種故障,事務不能繼續進行,系統將事務中對數據庫的所有已完成的操作全部撤銷,回滾到事務開始時的狀態。

如下面的例子:

void Widget::on_pushButton_clicked()
{
    if(QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions))
    { //先判斷該數據庫是否支持事務操作
        if(QSqlDatabase::database().transaction()) //啟動事務操作
        {
            //下面執行各種數據庫操作

            QSqlQuery query;
            query.exec("insert into student values (14, 'hello')");
            query.exec("delete from student where id = 1");
            if(!QSqlDatabase::database().commit())
            {
                qDebug() << QSqlDatabase::database().lastError(); //提交
                if(!QSqlDatabase::database().rollback())
                    qDebug() << QSqlDatabase::database().lastError(); //回滾
             }
        }
    }
}

 

http://blog.sina.com.cn/s/blog_67173244010103ah.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM