当前位置: 首页 > news >正文

MySQL在C中常用的API接口

常用的API接口

在C中常用的mysql API接口

1、初始化mysql对象。

mysql_init(NULL);

2、mysql连接函数:第一个参数是无连接的mysql对象,第二个参数是mysql地址,后面是用户名、密码、库名。函数返回一个有连接的MySQL对象。

mysql_real_connect(m_mysql, maddr, "root", "123456", "db", 0, NULL, 0);

3、sql查询函数:有连接的mysql对象,SQL语句。

mysql_query(m_mysql, sql.c_str());

4、获取查询结果集:将查询结果放在MYSQL RES* 对象中。

MYSQL_RES* res = mysql_store_result(m_mysql); 

5、从查询结果集中获取结果记录

MYSQL_ROW row = mysql_fetch_row(res);

6、从查询结果集中获取结果数量

mysql_num_rows(res);

7、判断获取最近一次查询结果集的列数,如果最后一个查询不是SELECT查询(无结果集),则此函数返回0。

mysql_field_count(m_mysql);

代码示例

根据用户ID获取其对应的组名

//先从参数列表中获取可连接的mysql地址
int db_c connect(void){MYSQL* mysql = m_mysql; //先拷贝原地址 做副本//寻找可用的连接 定义一个常量迭代器 遍历配置列表for(std::vector<std::string>::const_iterator maddr = g_maddrs.begin() ;maddr != g_maddrs.end() ; ++maddr){//判断当前地址是否可用if(m_mysql = mysql_real_connect(mysql , maddr->c_str(),"root", "123456", "db", 0, NULL, 0)){return OK; //#define OK 1  链接成功返回OK}}//遍历结束后 无可用连接 打印错误日志logger_error("connect database fail: %s",mysql_error(m_mysql = mysql));return ERROR; //#define ERROR 0
}
//根据用户ID获取其组名
int db_c::get(char const* userid, std::string& groupname){//拼接sql语句acl::string sql;sql.format("SELECT group_name FROM t_router WHERE userid='%s';",userid);//执行查询语句if(mysql_query(m_mysql, sql.c_str())){//如果失败打印日志logger_error("query database fail: %s, sql: %s",mysql_error(m_mysql), sql.c_str());return ERROR;}//获取查询结果集MYSQL_RES* res = mysql_store_result(m_mysql);//如果获取失败打印日志if (!res) {logger_error("result is null: %s, sql: %s",mysql_error(m_mysql), sql.c_str());return ERROR;}//从查询结果集中 获取查询记录MYSQL_ROW row = mysql_fetch_row(res);//如果失败打印日志if (!row)logger_warn("result is empty: %s, sql: %s",mysql_error(m_mysql), sql.c_str());else { //成功的话 获取结果groupname = row[0];}return OK;
}
http://www.xdnf.cn/news/1071397.html

相关文章:

  • Linux信号机制:从入门到精通
  • Java项目:基于SSM框架实现的宠物综合服务平台管理系统【ssm+B/S架构+源码+数据库+毕业论文+开题报告】
  • 【记录】Ubuntu|Ubuntu服务器挂载新的硬盘的流程(开机自动挂载)
  • 动手学Python:从零开始构建一个“文字冒险游戏”
  • 2025.6.27总结
  • react-sequence-diagram时序图组件
  • 消息队列的网络模型详解:IO多路复用、Reactor模型、零拷贝
  • 将ONNX模型转换为(OPENMV可用的格式)TensorFlow Lite格式
  • 【C/C++】单元测试实战:Stub与Mock框架解析
  • 【机器学习深度学习】线性回归(基本模型训练流程)
  • 19、RocketMQ核⼼编程模型
  • AI助力基因数据分析:用Python玩转生命密码的秘密
  • 像素之外的智慧:Adobe AI在动态影像与云端协作中的进阶应用
  • LLM驱动开发:正在重塑软件工程的下一场革命
  • Re:从零开始的文件结构(融合线性表来理解 考研向)
  • 自动化保护 AWS ECS Fargate 服务:使用 Prisma Cloud 实现容器安全
  • uiautomation控制计算器,不动鼠标(界面控制)
  • Nuxt.js基础(配置)
  • 【Elasticsearch】Linux环境下安装Elasticsearch
  • 论特定领域软件架构
  • 《Opto-Electronic Advances》热点论文速览(2025)
  • 汽车涂胶车间的“通信桥梁”:PROFIBUS DP转ETHERNET/IP网关的应用实践
  • word中如何保存高清图片,并保存为高质量的pdf文件(图像不失真)
  • 多张图片生成PDF每张图片生成pdf的一页
  • lxd 容器内的深度学习服务器环境配置
  • sql server 将nvarchar长度设置成max有什么隐患
  • VSCode中创建和生成动态库项目
  • 时序数据库全面解析与对比
  • TCP/IP协议简要概述
  • 小型软件开发的三重境界:从混沌编码到结构化设计