ZBLOG

c++ mysql 事务例子

以下是一个C++ MySQL事务的例子:

#include <iostream>
#include <mysql.h>

using namespace std;

int main() {
    MYSQL *conn;
    MYSQL_RES *res;
    MYSQL_ROW row;

    conn = mysql_init(NULL);

    if (conn == NULL) {
        cout << "Error: can't create MySQL connection" << endl;
        return 1;
    }

    if (!mysql_real_connect(conn, "localhost", "user", "password", "database", 0, NULL, 0)) {
        cout << "Error: can't connect to database" << endl;
        mysql_close(conn);
        return 1;
    }

    // start transaction
    if (mysql_autocommit(conn, false)) {
        cout << "Error: can't start transaction" << endl;
        mysql_close(conn);
        return 1;
    }

    int id = 1; // example id to update

    // update example row in table
    if (mysql_query(conn, "UPDATE example_table SET column1 = 'new_value' WHERE id = '" + to_string(id) + "'")) {
        cout << "Error: can't update table" << endl;
        mysql_rollback(conn); // rollback transaction
        mysql_close(conn);
        return 1;
    }

    // select updated row
    if (mysql_query(conn, "SELECT * FROM example_table WHERE id = '" + to_string(id) + "'")) {
        cout << "Error: can't select from table" << endl;
        mysql_rollback(conn); // rollback transaction
        mysql_close(conn);
        return 1;
    }

    res = mysql_store_result(conn);

    if (res == NULL) {
        cout << "Error: can't store result" << endl;
        mysql_rollback(conn); // rollback transaction
        mysql_close(conn);
        return 1;
    }

    row = mysql_fetch_row(res);

    if (row == NULL) {
        cout << "Error: can't fetch row" << endl;
        mysql_rollback(conn); // rollback transaction
        mysql_close(conn);
        return 1;
    }

    // check if update was successful
    if (string(row[1]) != "new_value") {
        cout << "Error: update was not successful" << endl;
        mysql_rollback(conn); // rollback transaction
        mysql_close(conn);
        return 1;
    }

    // commit transaction
    if (mysql_commit(conn)) {
        cout << "Error: can't commit transaction" << endl;
        mysql_rollback(conn); // rollback transaction
        mysql_close(conn);
        return 1;
    }

    mysql_free_result(res);
    mysql_close(conn);

    return 0;
}

该程序连接到MySQL数据库,启动一个事务,更新一个示例表中的一行,然后选择该行并检查是否成功更新。如果任何步骤失败,则会回滚事务。如果所有步骤都成功,则提交事务。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=350

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?