Mysql——用C语言链接数据库

在实际的业务环境中我们不会直接使用命令行来访问Mysql服务,而是在程序中使用代码去访问,下面介绍的就是如何使用代码操作数据库。

安装Mysql库

mysql官方给我们提供了用以操作mysql数据库的动静态库以及头文件,我们只需要将其下载下来并安装到对应目录即可,本质上就是能让系统找到头文件和相关动态库:https://blog.csdn.net/2302_80221042/article/details/156562410?fromshare=blogdetail&sharetype=blogdetail&sharerId=156562410&sharerefer=PC&sharesource=2302_80221042&sharefrom=from_linkhttps://blog.csdn.net/2302_80221042/article/details/156562410?fromshare=blogdetail&sharetype=blogdetail&sharerId=156562410&sharerefer=PC&sharesource=2302_80221042&sharefrom=from_link

使用Mysql库

Mysql的相关接口在Mysql官网上都有涵盖

cpp 复制代码
  //初始化句柄
  MYSQL* mysql = mysql_init(nullptr);
  if (mysql) { cout << "初始化mysql句柄成功" << endl; }

  //链接数据库
  mysql = mysql_real_connect(mysql, host, user, passwd, db, port, nullptr, 0);
  if (mysql) { cout << "连接数据库成功" << endl; }

  //指明客户端(句柄)与服务器通信的字符集,也告诉了mysql要把查询结果转成gbk再发给客户端
  mysql_set_character_set(mysql,"gbk");

  //执行语句
  const char* sql1 = "insert into ntb values (8,'哈哈',0,0,0)";
  int ret1 = mysql_query(mysql,sql1);
  if (!ret1)cout << "插入成功" << endl;

  const char* sql2 = "select * from ntb";
  int ret2 = mysql_query(mysql, sql2);
  if (!ret2)cout << "查询成功" << endl;

  //获取最近一次查询的结果
  MYSQL_RES* result = mysql_store_result(mysql);

  //获取结果的行数和列数
  my_ulonglong row = mysql_num_rows(result);
  my_ulonglong col = mysql_num_fields(result);

  //获取所有字段的信息,这里我们打印每一列的列名
  MYSQL_FIELD* field = mysql_fetch_fields(result);
  for (int k = 0; k < col; k++)
  {
	cout << field[k].name << " ";
  }
  cout << endl;


  for(int i =0;i<row;i++) 
  {
	//获取一行的内容,会自动递增,下一次调用就是获取下一行内容
	MYSQL_ROW line = mysql_fetch_row(result);

	//获取该行的所有字段
	for(int j = 0;j<col;j++) 
	{
   cout << line[j]<< " ";
	}
	cout << endl; 
  }

  //销毁结果集
  mysql_free_result(result); 
  //关闭mysql连接
  mysql_close(mysql);

注:Mysql中存储表用的编码和通信所用的编码可以不一样。

相关推荐
Omics Pro3 分钟前
研究证实AI虚拟细胞可用于药物靶点发现
数据库·人工智能·算法·机器学习·自然语言处理
好奇的菜鸟6 分钟前
GORM 入门(二):从 database/sql 平滑过渡到 GORM
数据库·sql
长春的KAKA20 分钟前
GitLab 项目页面报 500 错误的完整修复记录:PostgreSQL 数据库损坏、统计表缺失及数据库迁移
数据库·postgresql·gitlab
这个DBA有点耶33 分钟前
关系数据库管理系统选型指南:四步决策框架与主流产品技术路线对比
数据库·sql·程序人生·mysql·database·dba
jason.zeng@150220741 分钟前
(七)「固化 Rest 接口 + Text-to-SQL 灵活查询」双模式 Agent 架构教程
数据库·python·sql·ai·架构·langchain·ai编程
我不会起名字3221 小时前
MVCC 快照读为什么读不到刚提交的数据:ReadView 的 4 条可见性规则
数据库·mysql·innodb·mvcc·事务隔离
2501_933670792 小时前
2027届数据类专业投用户增长岗:A/B实验、指标和SQL准备思路
数据库·sql
用户337922545682 小时前
Sirchmunk 深度解析(一):一个无需向量数据库的自进化搜索引擎架构设计
数据库
染指11102 小时前
139.Agent-多Agent框架-Skills渐进式加载文档
数据库·人工智能·langchain·agents
骑着蜗牛撵大象3272 小时前
SpringBoot+Vue3 企业智能体侧挂架构:独立服务、独立数据库与主线零侵入落地
数据库·spring boot·架构·vue·springboot·事件驱动·服务拆分