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

//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;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

介绍一款受欢迎的.NET 开源UI库

概述今天要带大家了解的是一款WPF的开源控件库MahApps.Metro。MahApps.Metro是用于创建现代WPF应用程序的工具包&#xff0c;它许多开箱即用的好东西。目前支持的NET Framework 4.6.2及更高版本、.NET Core 3.1, .NET 5 and .NET 6 (on Windows)。官网学习文档地址&#xff1a;…

图像分类中混淆矩阵精度验证法中的几个指标说明

ToolBox->Classification->PostClassification->Confusion Matrix->Using Ground Truth ROIs,可以得到如下的分类精度验证的混淆矩阵。 要看懂这个精度验证结果,需要了解几个混淆矩阵中的几项评价指标:

React Native之触摸事件(Touchable系列和onLongPress)

1 触摸事件 普通点击我们可以使用onPress方法,我们可以使用Touchable 系列控件设计我们的按钮 TouchableHighlight 背景会在用户手指按下时变暗 TouchableNativeFeedback用户手指按下时形成类似墨水涟漪的视觉效果 TouchableOpacity指按下时降低按钮的透明度&#xff0c;而…

社交背水一战?校园日记背后,支付宝野心你真能懂?

“校园日记”昨天火了一天&#xff0c;我们也是时候来聊聊支付宝背后的具体战略和意图了。今天早上看到虎嗅的头条《支付宝的“圈子”&#xff0c;阿里做社交的背水一战》&#xff0c;文章观点主要分析了支付宝做社交的必要性&#xff0c;以及这次切入社交领域的巧妙性。 这篇文…

WebForm 使用点滴。。。。

WebForm使用方式与WinForm很是相似&#xff0c;可控性非常高&#xff01; 1、调用别的按钮事件&#xff1a; BtnSelect_Click(sender, e);转载于:https://www.cnblogs.com/chenmfly/p/4409447.html

System.FormatException: GUID 应包含带 4 个短划线的 32 位数(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)。...

在NHibernate数据库查询中出现了这个错误&#xff0c;由于是数据库是mysql的&#xff0c;当定义的字段为char(36)的时候就会出现这个错误。 【解决方法】 将char(36) 改成varchar(40)就行了 参考&#xff1a;http://www.cnblogs.com/end/archive/2012/12/26/2834068.html转载于…

python3文件的编码类型是什么_Python3编码类型有哪些?怎么转换?

经过小伙伴们的提醒&#xff0c;小编发现编码方面少讲了一个基础知识&#xff0c;所以有的小伙伴对这方面的内容比较模糊&#xff0c;这就让小编有点尴尬了。收到大家的催促&#xff0c;小编马上就整理出了编码类型的资料&#xff0c;内容方面都是经过精简的&#xff0c;便于小…

北大青鸟s2结业考试机试_重庆北大青鸟「学员心声」任何一次的考试,都是一次珍贵的蜕变...

相信不少同学&#xff0c;在每次考完试后都会有一段 “舒适期‘’。虽然这时候有讲评、有成绩、有排名&#xff0c;但就是感觉学习压力少了许多。然而重庆北大青鸟校区鼓励学员考完要分析、总结考试结果&#xff0c;这样才能更好的找出在学习中遇到的问题并加以解决。以下分享的…

React Native之(var和let区别 )(简单解构)(map对象遍历)(可变顺序参数和不可以变顺序参数函数)

1 var和let区别 let左右范围在块里面,var定义的变量可提升,用let声明的变量不可以声明2次 2 简单解构 let [a, b, c] [1, 2, 3];3 map对象遍历 const map new Map();map.set(first, hello);map.set(second, world);for (let [key, value] of map) {console.log(key "…

【鉴权/授权】一步一步实现一个简易JWT鉴权

微信公众号&#xff1a;趣编程ACE关注可了解.NET日常开发技巧。如需源码&#xff0c;请公众号留言 源码;**[如果您觉得本公众号对您有帮助&#xff0c;欢迎下方扫码加入群聊]鉴权、授权专题之简易鉴权我记得作为实习生去公司上班的时候&#xff0c;领导就直接让我熟悉注册、登录…

17、字符设备控制技术

字符设备控制技术 前面的学习&#xff0c;我们学习了驱动程序&#xff0c;实现程序的读写功能。现在设备还有一项更重要的功能--控制。 控制设备的函数&#xff1a;ioctl。 Cmd&#xff1a;参数是我们发送的命令&#xff0c;例如重启。 第三个参数&#xff1a;是依赖第二个…

如何在Lua与C/C++之间实现table数据的交换

为什么80%的码农都做不了架构师&#xff1f;>>> 之前在《C/C和Lua是如何进行通信的&#xff1f;》一文中简单的介绍了lua与宿主之间的通信。简单的说两种不同的语言之间数据类型不一样又如何进行数据交换呢&#xff1f;那就是lua_State虚拟栈&#xff0c;通过栈操作…

华为ar2200路由器 策略路由_路由交换篇 06 华为路由器RIP协议的配置

任务2 RIP路由协议的配置■ 任务背景某大型企业已有12台路由器&#xff0c;需要组建内部网络实现资源共享&#xff0c;考虑公司规模较大不适合采用静态路由组网&#xff0c;工程师对公司的实际情况进行了分析&#xff1a;1、路由跳数较多&#xff0c;不适合使用静态路由组网&am…

c均值算法的设计与实现_如何使用C链表实现 LRU 算法

什么是 LRU 算法LRU 是一种缓存淘汰策略。计算机的缓存容量有限&#xff0c;如果缓存满了就要删除一些内容&#xff0c;给新的内容腾位置。但是要删除哪些内容呢&#xff1f;我们肯定希望删掉那些没有用的缓存&#xff0c;而把有用的数据继续留在缓存中&#xff0c;方便之后继续…

React Native之编译提示Only one default export allowed per module.

1 问题 部分代码如下 class HomeScreen extends React.Component {render() {return (<View style{{ flex: 1, alignItems: center, justifyContent: center }}><Text>Home Screen</Text></View>);} }export default createStackNavigator({Home: {s…

Matlab插值方法大全

命令1 interp1 功能 一维数据插值(表格查找)。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。 x:原始数据点 Y:原始数据点 xi:插值点 Yi:插值点 格式 (1)yi = interp1(x,Y,xi) 返回插值向量yi,每一元素对应于参量xi,同…

VS Code部署Teams webhook到Azure Functions

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;6分钟&#xff09;Microsoft Teams这款产品对于我们来说已经很熟悉了&#xff0c;作为开发者&#xff0c;我们也可以通过官方的一些开发模式来build我们自己的Teams应用。今天快速跟大家分享一下&#xff0c;如何在VS…

记一次TCP连接异常故障解决

为什么80%的码农都做不了架构师&#xff1f;>>> 一.情况表现为 1.在公司内网对站点的http访问&#xff1a; linux主机出现故障&#xff1a;curl以及抓包分析&#xff0c;发现服务端不响应linux客户端的请求&#xff0c;无法建立TCP连接&#xff0c;浏览器返回“无法…

【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)

原文网址&#xff1a;http://www.cnblogs.com/luxiaofeng54/archive/2011/08/20/2147086.html 基于 Android NDK 的学习之旅-----数据传输二&#xff08;引用数据类型&#xff09;(附源码) 基于 Android NDK 的学习之旅-----数据传输&#xff08;引用数据类型&#xff09; 接着…

微软官方pe工具_微软官方下载工具

二、进入官网下载百度搜索“win10下载”进入微软官网win10下载地址&#xff0c;点击“立即下载工具”开始下载&#xff1b;三、运行软件下载完成后&#xff0c;右键以“管理员身份”打开&#xff0c;点击“接受”。四、选择用途选择第一个升级自己的电脑&#xff1b;选择第二个…