使用libhv库连接和操作MySQL数据库

MySQL是一种常用的关系型数据库,广泛应用于Web开发和数据存储。libhv是一个轻量级的C/C++网络库,提供了一个简单易用的接口来连接和操作MySQL数据库。

安装libhv

首先,我们需要安装libhv库。可以在GitHub上找到libhv的源码和相关文档。

$ git clone 
$ cd libhv
$ ./build.sh
$ sudo ./install.sh

连接到MySQL数据库

#include "hloop.h"
#include "hsocket.h"
#include "hmysql.h"

void on_connect(hmysql_t* mysql, int error_code) {
    if (error_code != 0) {
        printf("connect failed: %s\n", mysql_error(mysql));
        return;
    }

    printf("connect success\n");

    // 执行SQL语句
    hmysql_query(mysql, "SELECT * FROM users", [](hmysql_res_t* res) {
        if (res == NULL) {
            printf("query failed: %s\n", mysql_error(res->mysql));
            return;
        }

        printf("query success\n");

        // 遍历结果集
        for (int i = 0; i < res->num_rows; ++i) {
            hmysql_row_t* row = &res->rows[i];
            for (int j = 0; j < res->num_fields; ++j) {
                hmysql_field_t* field = &res->fields[j];
                printf("%s: %s\n", field->name, row->data[j]);
            }
        }

        // 释放结果集
        hmysql_free_result(res);

        // 断开连接
        hmysql_close(res->mysql);
    });
}

int main() {
    hloop_t loop;
    hloop_init(&loop);

    // 创建MySQL连接
    hmysql_t* mysql = hmysql_new(&loop);
    hmysql_set_callback(mysql, on_connect);
    hmysql_real_connect(mysql, "127.0.0.1", 3306, "root", "password", "test");

    hloop_run(&loop);
    hloop_cleanup(&loop);

    return 0;
}

上面的代码实现了通过libhv库连接到MySQL数据库,并执行一条查询语句,将结果打印到控制台。在hmysql_real_connect函数中,传入MySQL服务器的IP地址、端口、用户名、密码和数据库名。在回调函数on_connect中,可以处理连接成功或失败的逻辑。在hmysql_query函数中,传入要执行的SQL语句和回调函数,回调函数中可以处理查询结果。

其他操作

除了查询,libhv还提供了一些其他操作MySQL数据库的接口,例如插入、更新和删除数据等。

// 插入数据
hmysql_query(mysql, "INSERT INTO users (name, age) VALUES ('Tom', 20)", [](hmysql_res_t* res) {
    if (res == NULL) {
        printf("insert failed: %s\n", mysql_error(res->mysql));
        return;
    }

    printf("insert success\n");
    hmysql_close(res->mysql);
});

// 更新数据
hmysql_query(mysql, "UPDATE users SET age = 21 WHERE name = 'Tom'", [](hmysql_res_t* res) {
    if (res == NULL) {
        printf("update failed: %s\n", mysql_error(res->mysql));
        return;
    }

    printf("update success\n");
    hmysql_close(res->mysql);
});

// 删除数据
hmysql_query(mysql, "DELETE FROM users WHERE name = 'Tom'", [](hmysql_res_t* res) {
    if (res == NULL) {
        printf("delete failed: %s\n", mysql_error(res->mysql));
        return;
    }

    printf("delete success\n");
    hmysql_close(res->mysql);
});

总结

本文介绍了如何使用libhv库连接和操作MySQL数据库。libhv提供了简单易用的接口,并且具有高性能和低内存消耗的特点。通过libhv,我们可以方便地进行数据库操作,满足各种应用场景的需求。希望本文对你理解和使用libhv和MySQL有所帮助。