当前位置: 首页 > 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;
}

相关文章:

  • [Python] -基础篇2-Python中的变量和数据类型详解
  • Maven生命周期与阶段扩展深度解析
  • Tomcat Maven 插件
  • 本年度TOP5服装收银系统对比推荐
  • 工作台-01.需求分析与设计
  • Java基础(五):流程控制全解析——分支(if/switch)和循环(for/while)的深度指南
  • iOS 远程调试与离线排查实战:构建非现场问题复现机制
  • 如何构建个人AIagent
  • RabitQ 量化:既省内存又提性能
  • Git下载与使用完全指南:从安装到基础操作详解,附上git的学习网站(很直观)(可以模拟git的全过程)
  • 【数据挖掘】数据采集和预处理
  • 从输入到路径:AI赋能的地图语义解析与可视化探索之旅
  • 创客匠人深度解析大健康私域直播乱象:合规化才是 IP 变现的生命线
  • mongodb生产备份工具PBM
  • centos网卡绑定参考
  • RediSearch高性能全文搜索引擎
  • 报道称CoreWeave洽谈收购Core Scientific,后者涨超30%
  • AI优化SEO关键词精进
  • 开源模型应用落地-让AI更懂你的每一次交互-用LangChain、Streamlit与Redis构建AI模型的“不忘”人生(三)
  • Flutter 网络请求指南, 从 iOS 到 Flutter 的 Dio + Retrofit 组合