1、下载驱动mysql-connector-c-6.1.11-win32.zip。
https://downloads.mysql.com/archives/c-c/
2、CodeBlocks配置。
a、指定libmysql.lib路径。

b、将libmysql.dll复制到Debug目录下。
c、指定mysql.h所在目录。

3、测试。
#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stddef.h>
#include <time.h>
#include <winsock2.h>
#include <mysql.h>
int main() {
// mysql连接
MYSQL *conn;
// mysql结果集
MYSQL_RES *mysql_res;
// mysql行操作符
MYSQL_ROW mysql_row;
char sql[200];
int i;
// 初始化
conn = mysql_init(NULL);
if (!conn) {
return EXIT_FAILURE;
}
// 连接
conn = mysql_real_connect(conn, "127.0.0.1", "root", "root", "test", 0, NULL, 0);
if (!conn) {
return EXIT_FAILURE;
}
// 设置字符集
mysql_set_character_set(conn, "utf8");
// sprintf()函数用于将格式化的数据写入字符串
sprintf(sql, "%s", "select * from app_users");
// 执行查询
mysql_query(conn, sql);
//mysql_store_result是把查询结果一次性取到客户端的离线数据集,当结果比较大时耗内存。
//mysql_use_result是查询结果放在服务器上,客户端通过指针逐行读取,节省客户端内存。
mysql_res = mysql_use_result(conn);
while (mysql_row = mysql_fetch_row(mysql_res)) {
printf("%s %s\n", mysql_row[1], mysql_row[2]);
/*
for (i = 0; i < mysql_num_fields(mysql_res); i++) {
printf("%s,", mysql_row[i]);
}
printf("\n");
*/
}
// 释放
mysql_free_result(mysql_res);
// 结束
mysql_close(conn);
}