限时福利领取


MySQL数据库是开发者常用的关系型数据库之一,通过C语言可以方便地对MySQL进行操作。下面我将分享如何使用C语言连接和操作MySQL数据库的详细过程。

准备工作

1. 安装MySQL开发包

在Linux系统中,可以通过apt命令轻松安装MySQL开发包:

MySQL开发包安装示意图

安装完成后,在/usr/include目录下会生成mysql目录,包含必要的头文件。

2. 配置编译环境

编写程序时需要包含mysql/mysql.h头文件,编译时可能会遇到找不到函数的问题:

编译错误提示

解决方法是在编译命令中添加-lmysqlclient选项链接MySQL库:

g++ your_program.cpp -o program -lmysqlclient

正确编译命令

MySQL基本操作

1. 初始化连接

首先需要初始化MySQL连接句柄:

MYSQL *mysql_init(MYSQL *mysql);

使用示例:

MYSQL* my = mysql_init(nullptr);
if(my == nullptr) {
    cerr << "初始化失败" << endl;
    return 1;
}

MySQL初始化示意图

2. 连接到数据库

使用mysql_real_connect函数建立实际连接:

MYSQL *mysql_real_connect(
    MYSQL *mysql,
    const char *host,
    const char *user,
    const char *passwd,
    const char *db,
    unsigned int port,
    const char *unix_socket,
    unsigned long client_flag
);

示例代码:

if(!mysql_real_connect(my,"localhost","username","password","dbname",3306,nullptr,0)) {
    cerr << "连接失败" << endl;
    return 2;
}

数据库连接成功提示

3. 执行SQL语句

使用mysql_query函数执行SQL命令:

int mysql_query(MYSQL *mysql, const char *stmt_str);

完整交互示例:

string sql;
while(true) {
    cout<<"请输入SQL语句: ";
    if(!getline(cin,sql) || sql == "quit") break;
    int n = mysql_query(my,sql.c_str());
    cout << (n == 0 ? "执行成功" : "执行失败") << endl;
}

SQL执行结果

处理查询结果

1. 获取结果集

对于SELECT查询,需要使用mysql_store_result获取结果:

MYSQL_RES *mysql_store_result(MYSQL *mysql);

2. 解析结果数据

获取行数和列数:

uint64_t mysql_num_rows(MYSQL_RES *result);
unsigned int mysql_num_fields(MYSQL_RES *result);

遍历结果行:

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);

获取列名:

MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result);

完整查询示例:

MYSQL_RES* res = mysql_store_result(my);
int rows = mysql_num_rows(res);
int cols = mysql_num_fields(res);

// 打印列名
MYSQL_FIELD *fields = mysql_fetch_field(res);
for(int i=0; i<cols; i++) {
    cout << fields[i].name << "\t";
}
cout << endl;

// 打印数据
for(int i=0; i<rows; i++) {
    MYSQL_ROW row = mysql_fetch_row(res);
    for(int j=0; j<cols; j++) {
        cout << row[j] << "\t";
    }
    cout << endl;
}

查询结果输出

注意事项

  1. 中文编码问题:连接后建议设置字符集
mysql_set_character_set(my,"utf8mb4");
  1. 记得关闭连接
mysql_close(my);

通过以上步骤,就可以在C程序中完整地操作MySQL数据库了。

Logo

音视频技术社区,一个全球开发者共同探讨、分享、学习音视频技术的平台,加入我们,与全球开发者一起创造更加优秀的音视频产品!

更多推荐