使用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有所帮助。