//MYSQL_RES保存查询结构

MYSQL_RES*

result_ = NULL;

int

error_code = 0; //保存错误码

char

error_info[1024] = '\0'; //保存错误信息

//对mysql数据库进行查询操作:

char

query_sql[1024] = "select * from db_name.table_name";

//构建查询sql语句

if(result_

!= NULL) //防止之前已经被使用过(所有的使用,在使用前都要判空)

{

mysql_free_result(result_);

result_

= NULL;

}

if(link_

== NULL) //防止没有链接

{

//重连,按照建立mysql数据库链接的方法进行建立,前面的blog中有讲到

}

//执行sql查询

if(mysql_query(link_,query_sql)

!= 0)

{

//查询失败

error_code

= mysql_errno(link_); //获取错误码

strncpy(error_info,mysql_error(link_),1024);

//获取错误信息

if((error_code

== 2013) || (error_code == 2006)) //2006

mysql服务器不可用,2013查询过程中,丢失链接

{

//重链,按照建立mysql数据库链接的方法进行建立

if(//重链失败)

{

return

false;

}

//重链成功,再次查询

if(mysql_query(link_,query_sql)

!= 0)

{

//再次查询失败

error_code

= mysql_errno(link_);

strncpy(error_info,mysql_error(link_),1024);

//返回错误

return

false;

}

error_code

= 0; //查询成功了。

}

}

else

{

//查询成功

}

//查询成功,保存查询结果

result_

= mysql_store_result(link_);

if(result_

== NULL)

{

error_code

= mysql_errno(link_); //获取错误码

strncpy(error_info,mysql_error(link_),1024);

//获取错误信息

//返回错误

return

false;

}

//获取查询结果的行数(记录数)

return

mysql_num_rows(result_);

//获取查询结果的字段数

return

mysql_num_fields(result_);

//获取查询结果的各个字段的字段名称

MYSQL_FIELD

*fields; //保存字段名字信息

unsing

int num_fields;

unsigned

int i;

num_fields

= mysql_num_fields(result); //获取查询结果中,字段的个数

fields

= mysql_fetch_fields(result); //获取查询结果中,各个字段的名字

for(i =

0; i < num_fields;i++)

{

printf("field

%u is %s\n",i,fields[i].name);

}

//获取查询出来的结果,即遍历查询到的每一行记录

MYSQL_ROW

row; //保存行记录信息

unsigned

int num_fields;

unsigned

int i;

num_fields

= mysql_num_fields(result_);

while((row

= mysql_fetch_row(result_))) //遍历查询结果中的各行记录

{

unsigned

long *lengths = NULL;

lengths

= mysql_fetch_lengths(result_); //获取每一个记录行中,每一个字段的长度,在lengths数组中。

for( i

= 0; i < num_fields; i++)

{

printf("数据长度%u

\t 数据内容%s",lengths[i],row[i]?row[i]:"NULL");

}

printf("\n");

}

//释放资源,断开链接

if(result_ != NULL)

{

mysql_free_result(result_);

result_ = NULL;

}

if(link_ != NULL)

{

mysql_close(link_);

link_ = NULL;

}

c 编程 mysql结果集_使用mysql C语言API编写程序—MYSQL数据库查询操作(执行查询操作,获取查询结果的字段数,记录行数,...相关推荐

  1. c语言 mysql 查询数字_使用mysql C语言API编写程序—MYSQL数据库查询操作

    //MYSQL_RES保存查询结构 MYSQL_RES* result_ = NULL; int error_code = 0;//保存错误码 char error_info[1024] = '\0' ...

  2. mysql group by取条数最多_mysql获取group by总记录行数的方法

    本文实例讲述了mysql获取group by总记录行数的方法,分享给大家供大家参考.具体方法分析如下: 一般来说,mysql获取group by内部可以获取到某字段的记录分组统计总数,而无法统计出分组 ...

  3. mysql groupby 取值_mysql获取groupby总记录行数的方法

    本文实例讲述了mysql获取group by总记录行数的方法,分享给大家供大家参考.具体方法分析如下: 一般来说,mysql获取group by内部可以获取到某字段的记录分组统计总数,而无法统计出分组 ...

  4. mysql group by 行数_mysql获取group by的总记录行数另类方法

    mysql获取group by内部可以获取到某字段的记录分组统计总数,而无法统计出分组的记录数. mysql的SQL_CALC_FOUND_ROWS 使用 获取查询的行数 在很多分页的程序中都这样写: ...

  5. excel隐藏了列数和行数_快速隐藏Excel行和列

    excel隐藏了列数和行数 In some of my Excel workbooks there are calculation rows or columns that are required ...

  6. Python编程 统计Java源文件代码行数,注释行数,空白行数

    每次学习新的语言,就想重新实现一遍做过的课设=,= 这里实现的是"综合性实验 Java源代码分析程序"的第三部分 第二部分见:[Python编程]统计目录下Java源文件的关键字出 ...

  7. mysql 帮助命令_一篇文章帮你搞定所有MySQL命令!

    MySQL的基本操作可以包括两个方面:MySQL常用语句如高频率使用的增删改查(CRUD)语句和MySQL高级功能,如存储过程,触发器,事务处理等.而这两个方面又可以细分如下: MySQL常用语句 表 ...

  8. mysql 连接 中文_大佬们E语言连接MYSQL输出中文乱码怎么破

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 .版本 2 .支持库 mysql .支持库 iext .程序集 窗口程序集_启动窗口 .子程序 _按钮1_被单击 数据库连接句柄 = 连接MySql (& ...

  9. mysql sqlserver对比_很用心的写了 9 道 MySQL 面试题

    MySQL 一直是本人很薄弱的部分,后面会多输出 MySQL 的文章贡献给大家,毕竟 MySQL 涉及到数据存储.锁.磁盘寻道.分页等操作系统概念,而且互联网对 MySQL 的注重程度是不言而喻的,后 ...

最新文章

  1. 无法启动MySQL数据库
  2. sendmail(一)
  3. 郁闷心情——电话聊天排解法
  4. 浅谈产品的用户画像:它并不是万能的
  5. 背景图页面缩小会变形_社团招新迎新海报背景图第321期
  6. android做题imageview缩放,巧用ViewPager实现驾考宝典做题翻页效果
  7. Android 应用开发(20)--- 定义自定义应用程序权限
  8. java解析csv文件工具类,java操作CSV文件工具类
  9. python 图片识别
  10. Flutter入门——山寨掘金(二)
  11. 安全辅助 冰刃 IceSword 1.2 中文版 修正号061022
  12. linux vi命令怎么使用方法,Linux下 vi 命令用法
  13. 微软服务器如何启动tomcat,Windows服务器下重启Tomcat服务步骤
  14. DNS解析出错导致网站在部分地区无法打开
  15. brew安装php-ffmpeg,macos安装ffmpeg以及出现问题的解决方案,一次成功
  16. MATLAB因子分析
  17. 【雷达原理】FMCW雷达简介
  18. Flutter移动电商实战 --(14)首页_拨打电话操作
  19. CNN误差反传时旋转卷积核的简明分析
  20. 神奇的算法(一):欧几里德算法

热门文章

  1. Xamarin.Forms: 无限滚动的ListView(懒加载方式)
  2. 盘点大厂的那些开源项目 - 小米科技
  3. dotNet Core 3.1 使用 Aspose (部署 Docker)
  4. 你是个失败者,有什么资格说话?
  5. ASP.NET Core Blazor Webassembly 之 路由
  6. 【项目升级】单库、多库、读写分离 · 任你选
  7. 开源网站云查杀方案,搭建自己的云杀毒。
  8. Docker最全教程之Go实战,墙裂推荐(十九)
  9. 2018年10月28日宁波dotnet社区活动回顾及下次活动预告
  10. ASP.NET Core中的OWASP Top 10 十大风险-跨站点脚本攻击 (XSS)