青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

逛奔的蝸牛

我不聰明,但我會很努力

   ::  :: 新隨筆 ::  ::  :: 管理 ::

#include <qDebug>

#include "dbutil/DBUtil.h"

#include <QtSql>


bool insert1();

bool insert2();


int main(int argc, char *argv[]) {

    QSqlDatabase db = DBUtil::getDatabase();

    qDebug() << db.driver()->hasFeature(QSqlDriver::Transactions); // 查看數據庫是否支持事務處理.

    db.transaction();

    qDebug() << "Begin transaction";


    bool ok1 = insert1();

    bool ok2 = insert2();


    if (ok1 && ok2) {

        db.commit();

        qDebug() << "Commit";

    } else {

        db.rollback();

        qDebug() << "Rollback";

    }

}


bool insert1() {

    QSqlDatabase db1 = DBUtil::getDatabase();

    QString sql1("INSERT INTO a(id) VALUES(1)");

    QSqlQuery query1(db1);


    bool ok1 = true;

    ok1 = query1.exec(sql1);


    if (!ok1) {

        qDebug() << QString("Query1: %1").arg(query1.lastError().text());

    }


    return ok1;

}


bool insert2() {

    QSqlDatabase db2 = DBUtil::getDatabase();

    QString sql2("INSERT INTO b(amount2) VALUES(30)");

    QSqlQuery query2(db2);


    bool ok2 = true;

    ok2 = query2.exec(sql2);


    if (!ok2) {

        qDebug() << QString("Query2: %1").arg(query2.lastError().text());

    }


    return ok2;

}


Qt中事務的提交, 如果在一串操作之后, 其中有失敗也有成功的, 但是在調用db.commit(), 那么所有正確的操作都會更新數據庫, 而失敗的操作仍然失敗. 所以得自己手動的使用db.rollback(), 如下面的片段:

bool ok1, ok2;

QString error1, error2;


QString sql1 = "insert into a(id) values(3)";

QString sql2 = "insert into b(amount2) values(100)";


QSqlDatabase db = DBUtil::getDatabase();

db.transaction();


QSqlQuery query1(db);

ok1 = query1.exec(sql1);


QSqlQuery query2(db);

ok2 = query2.exec(sql2);


db.commit();

因為query2操作失敗, 但是query1的操作成功, 而后面使用了db.commit(), 所以query1的操作提交了, 但是query2的操作沒有更新數據庫. 


如果開啟了事務, 在數據庫操作之后, 沒有手動的調用db.commit(), 那么操作也不會提交.

 

posted on 2009-07-24 12:09 逛奔的蝸牛 閱讀(1768) 評論(1)  編輯 收藏 引用 所屬分類: Qt

評論

# re: Qt: 事務處理片斷 2009-07-24 12:12 暗金裝備
QSqlDatabase DBUtil::getDatabase(bool *ok, QString *error) {
QSqlDatabase db;

if (!QSqlDatabase::contains(DBUtil::DATABASE_CONNECT_NAME)) {
db = QSqlDatabase::addDatabase("QSQLITE", DBUtil::DATABASE_CONNECT_NAME);
db.setDatabaseName(ConfigUtil::getInstance().getDatabasePath());
//qDebug() << "與數據庫建立連接";
} else {
db = QSqlDatabase::database(DBUtil::DATABASE_CONNECT_NAME, true);
}

if (!db.isOpen()) {
bool result = db.open();

if (0 != ok) {
*ok = result;
}
if ((false == result) && (0 != error)) {
*error = db.lastError().text();
}
}

return db;
}  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲天堂av高清| 国产精品久久久久久户外露出| 亚洲作爱视频| 国产一区自拍视频| 欧美成人影音| 久久伊人亚洲| 久久精品夜色噜噜亚洲a∨| 日韩一级片网址| 亚洲人成网在线播放| 欧美va亚洲va香蕉在线| 亚洲尤物在线视频观看| 99人久久精品视频最新地址| 母乳一区在线观看| 欧美黄色免费网站| 欧美激情导航| 亚洲久久一区| 国产精品99久久久久久有的能看| 亚洲免费av电影| 亚洲午夜电影网| 久久天天躁狠狠躁夜夜av| 久久福利毛片| 美女图片一区二区| 免费看亚洲片| 欧美午夜精品久久久久久孕妇| 国产精品国产三级国产a| 国产精品一级二级三级| 国产日韩欧美一区在线| 亚洲欧洲偷拍精品| 亚洲免费视频在线观看| 久久欧美肥婆一二区| 亚洲激情在线| 麻豆精品一区二区av白丝在线| 欧美日韩免费观看一区| 欧美午夜激情视频| 在线观看一区二区精品视频| 亚洲少妇自拍| 亚洲精选国产| 欧美精品 日韩| 亚洲国产综合在线| 老巨人导航500精品| 欧美在线看片| 国产一级久久| 久久国产精彩视频| 欧美亚洲免费| 久久日韩粉嫩一区二区三区| 欧美日韩国产成人在线| 亚洲第一福利在线观看| 欧美一区二区| 亚洲图片自拍偷拍| 欧美1区2区3区| 韩日精品在线| 午夜精品久久久久久久99黑人| 亚洲黄页视频免费观看| 久久久久久久尹人综合网亚洲| 亚洲欧美国产另类| 亚洲欧美日韩视频二区| 麻豆精品一区二区综合av| 一区二区三区亚洲| 欧美一区二区精美| 亚洲精品综合在线| 免费h精品视频在线播放| 国产欧美亚洲日本| 亚洲第一主播视频| 久久露脸国产精品| 亚洲综合电影| 欧美午夜无遮挡| 激情成人综合网| 在线不卡视频| 久久久综合免费视频| 午夜精品亚洲| 国产日产精品一区二区三区四区的观看方式| 亚洲高清视频在线观看| 久久久久久久欧美精品| 亚洲欧美国产视频| 欧美亚州在线观看| 亚洲一区二区久久| 一区二区三区导航| 欧美日韩一区在线视频| 久久亚洲一区二区三区四区| 欧美精品成人一区二区在线观看 | 欧美一区二区三区免费观看 | 正在播放日韩| 亚洲日本中文| 欧美人体xx| 一区二区三区www| 日韩一级在线| 国产精品视频专区| 亚洲欧美国产视频| 亚洲一区二区三区在线播放| 国产精品视频不卡| 久久久久久久999| 久久av老司机精品网站导航| 国内成人在线| 国产日韩一区欧美| 久久久999精品| 亚洲麻豆一区| 国产精品美女一区二区| 性欧美激情精品| 午夜精品久久久99热福利| 国产日韩一区在线| 亚洲欧洲一区二区天堂久久| 欧美色大人视频| 一区二区三区高清在线| 亚洲一区免费| 一区二区三区在线不卡| 欧美韩日一区| 国产精品美女在线| 免费在线亚洲欧美| 欧美视频一区二区三区| 久久国产成人| 欧美精品97| 久久精品国产久精国产爱| 久久九九有精品国产23| 日韩亚洲欧美精品| 午夜精品福利在线| 亚洲日本视频| 性做久久久久久久免费看| 最新国产成人在线观看| 正在播放欧美一区| 亚洲国产高清自拍| 亚洲人精品午夜在线观看| 国产日韩精品一区二区浪潮av| 欧美1区2区| 国产乱码精品| 亚洲欧洲在线看| 一区二区视频在线观看| 亚洲视频电影在线| 亚洲精品永久免费| 久久久久国产成人精品亚洲午夜| 亚洲视频每日更新| 99这里有精品| 在线视频免费在线观看一区二区| 久久国产黑丝| 欧美呦呦网站| 欧美午夜精品久久久久久超碰| 老色批av在线精品| 国产伦精品一区二区三区在线观看 | 亚洲片国产一区一级在线观看| 狠狠色综合色综合网络| 亚洲主播在线播放| 欧美在线观看视频在线| 另类亚洲自拍| 亚洲黄色一区| 国产一区二区三区四区| 欧美亚洲综合久久| 中文亚洲字幕| 国产精品永久免费| 亚洲日韩欧美视频一区| 夜夜精品视频一区二区| 美女主播一区| 亚洲精品网站在线播放gif| 国产精品亚洲综合天堂夜夜| 亚洲大片一区二区三区| 亚洲国产成人高清精品| 噜噜噜久久亚洲精品国产品小说| 午夜久久tv| 一区精品在线播放| 欧美三级视频在线| 欧美成人伊人久久综合网| 久久女同精品一区二区| 亚洲电影第三页| 玖玖视频精品| 一区二区日韩伦理片| 亚洲综合成人在线| 黄色国产精品| 免费观看日韩| 亚洲午夜av| 久久影院亚洲| 亚洲线精品一区二区三区八戒| 欧美日韩一区在线观看| 欧美伊久线香蕉线新在线| 香蕉国产精品偷在线观看不卡| 亚洲大胆美女视频| 亚洲天堂av电影| 久久激情五月激情| 亚洲国产中文字幕在线观看| 欧美日韩视频在线| 亚洲精品少妇30p| 午夜在线不卡| 国产日韩精品一区二区浪潮av| 久久亚洲国产精品日日av夜夜| 欧美成人日韩| 久久精品视频一| 亚洲精品在线观| 国产精品一区免费视频| 久久久久久久综合| 一区二区三区.www| 久久久亚洲一区| 日韩写真在线| 国产日韩精品久久久| 欧美激情综合五月色丁香小说| 亚洲男人第一网站| 欧美激情在线有限公司| 性做久久久久久| 亚洲一区二区三区四区五区午夜| 国产亚洲欧美另类中文| 欧美中文字幕第一页| 99国产精品久久久| 免费亚洲电影| 欧美成人免费观看|