赞
踩
本篇记录C/C++连接mysql利用mysql的api接口的方法:这个方法的代码基本上很久都没有变过了,这里做个笔记来简单学习一下,还有一种方法等有时间了解后再来更新
使用API的方式连接,需要先做环境配置,加载mysql的头文件和lib文件。可以看我之前的一篇文章
#include <stdio.h>
#include <mysql.h> // mysql 文件,如果配置ok就可以直接包含这个文件
int main(void) {
MYSQL mysql; //数据库句柄
MYSQL_RES* res; //查询结果集
MYSQL_ROW row; //记录结构体
//初始化数据库
mysql_init(&mysql);
//设置字符编码
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");
//连接数据库
if (mysql_real_connect(&mysql, "127.0.0.1", "root",
//"password", "database_name"分别填写自己的的数据库登录密码和表所在的数据库名称
//这里替换成自己的的数据库等路密码和自己所建的数据库名称即可
"password", "database_name", 3306, NULL, 0) == NULL) {
printf("错误原因: %s\n", mysql_error(&mysql));
printf("连接失败!\n");
exit(-1);
}
//查询数据
int ret = mysql_query(&mysql, "select * from student;");
//student是自己在数据库中所建的表名
printf("ret: %d\n", ret);
//获取结果集
res = mysql_store_result(&mysql);
//给 ROW 赋值,判断 ROW 是否为空,不为空就打印数据。
while (row = mysql_fetch_row(res)) {
printf("%s ", row[0]); //打印 ID
printf("%s ", row[1]); //打印姓名
printf("%s ", row[2]); //打印班级
printf("%s \n", row[3]);//打印性别
}
//释放结果集
mysql_free_result(res);
//关闭数据库
mysql_close(&mysql);
system("pause");
return 0;
}
注意:
1、使用c++语句对数据库进行增删改查,在使用c++中string类型时,需要把string类型转换为c中的类型,使用mysql_query函数把sql语句提交,操作成功返回0,结果会被保存到mysql对象中,操作失败会返回非0值
string str = "insert into tb_77 values(5,'sdmqy','h');"
mysql_query(&mysql, str.c_str());
2、调用 mysql_real_query() 或 mysql_query() 后,必须为每个调用 mysql_store_result() 或 mysql_use_result() 成功生成结果集的语句(选择、显示、描述、解释、检查表等)。 还必须在你之后调用 mysql_free_result() 完成结果集。
应用程序应将此一般大纲用于 通过客户端库与MySQL交互:
mysql_library_init()
初始化 MySQL 客户端库。mysql_init()
初始化连接处理程序并连接到服务器通过调用连接建立函数,例如mysql_real_connect()。
mysql_close()
关闭与 MySQL 服务器的连接。mysql_library_end()
来最终使用 MySQL 客户端库。名字 | 描述 |
---|---|
MYSQL | 这个结构代表一个数据连接的句柄,它几乎用于所有MySQL函数。 |
MYSQL_RES | 这个结构体代表一个询问语句的返回值(SELECT,SHOW, DESCRIBE, EXPLAIN),查询语句返回的信息叫做结果集 |
MYSQL_ROW | 这是一行数据的”类型安全“表示。,可以把它看成一个字符串集(但是如果他包含二进制数据的话,就不能这样做,因为很多数据内部都包含Null字节),行是通过mysql_fetch_row()获得的。 |
MySQL :: MySQL 8.0 C API 开发人员指南 :: 5.2 C API 基本数据结构
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。