C语言操作MySQL数据库的完整指南
·
MySQL数据库是开发者常用的关系型数据库之一,通过C语言可以方便地对MySQL进行操作。下面我将分享如何使用C语言连接和操作MySQL数据库的详细过程。
准备工作
1. 安装MySQL开发包
在Linux系统中,可以通过apt命令轻松安装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;
}

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;
}

处理查询结果
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;
}

注意事项
- 中文编码问题:连接后建议设置字符集
mysql_set_character_set(my,"utf8mb4");
- 记得关闭连接
mysql_close(my);
通过以上步骤,就可以在C程序中完整地操作MySQL数据库了。
更多推荐


所有评论(0)