c++ mysql事務提交及復原

來源:互聯網
上載者:User

標籤:

    之前在做有關資料庫的操作時發現,有些內容應該作為一個事務一起提交,而不是每個都單獨提交,這就需要把這些操作當做一個事務來處理。而我之前寫過簡單的資料庫的操作,因為mysql預設的是自動認可,我們就需要用到api——mysql_commit()。

    mysql_commit(MYSQL* mysql, my_bool mode);

    mode為1時表示ON,mode為0時表示OFF。


    在關掉自動認可後,以後我們的操作就需要自己手動提交了,而這就是我們所需要的了,對於一系列的操作,如果都成功了,那我們就把他們提交上去,如果失敗了就執行復原,這裡需要用到另外兩個api:

mysql_commit()
提 交事務。

mysql_rollback()

回 滾事務。

範例程式碼:

void myDB::test(){int i = 0;std::string sql_1 = "insert into user(id,username,password,level) values ( 1,‘username ‘,‘psd‘, 1 );";std::string sql_2 = "insert into user(id,username,password,level) values ( 1,‘username ‘,‘psd‘,‘1‘);";//std::string sql_2 = "update user set id = 4 where id =5;";int ON = 1;int OFF = 0;mysql_autocommit(connection,OFF);mysql_autocommit(connection,OFF);if(mysql_query(connection,sql_1.c_str())){std::cout << "sql_1 was error" << std::endl;i = 1;}if(mysql_query(connection,sql_2.c_str())){std::cout << "sql_2 was error" << std::endl;i = 1;}if(i == 1){mysql_rollback(connection);}else{mysql_commit(connection);}mysql_autocommit(connection,ON);}

    這個代碼可以直接用在之前的那篇linux下C++訪問mysql資料庫(2)裡的,因為我之前設定id為主鍵,不能重複,所以最後的結果就是sql_2執行錯誤,之前的操作全部復原。

    我自己做了一些測試,目前還沒有發現什麼問題。

c++ mysql事務提交及復原

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.