C++ 连接数据库的入口和获取列数、数据-深圳网站优化推广公司

C++ 连接数据库的入口和获取列数、数据

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 这里不具体放出完整的程序,分享两个核心函数:   由于这里用到的函数是编译器自己的库所没有的,需要自己下载mysql.h库或者本地有数据库,可以去bin找到,放进去。        前提,我自己的测试数据库是WampServe自带的mysql,曾经试过连接新浪云的,发现很坑,它里面的要放代码进去它空间才能连,不能在本机连,连接的输入形参全是它规定的常量! 第一个是连接数据库的:       行内带有详细注释,皆本人的见解,有理解错的,求帮指出。

这里不具体放出完整的程序,分享两个核心函数:

 

由于这里用到的函数是编译器自己的库所没有的,需要自己下载mysql.h库或者本地有数据库,可以去bin找到,放进去。

 

     前提,我自己的测试数据库是WampServe自带的mysql,曾经试过连接新浪云的,发现很坑,它里面的要放代码进去它空间才能连,不能在本机连,连接的输入形参全是它规定的常量!


第一个是连接数据库的:

      行内带有详细注释,皆本人的见解,有理解错的,求帮指出。

      再作简单介绍,之所有带有int返回类型,是因为一旦连接数据库失败就return 0 结束程序。

形参所输入的分别是 数据库地址、端口,本机的端口一般是3306、数据库名、用户名、密码,调用就能用了。

 1 int DateBase::init(const char* host, int port, const char* database, const char* user, const char* password){
 2     this->mysql_res = NULL;//再次先赋空,原因是init这函数可以在任意函数内使用,为了避免在它之前,有缓存读入导致出错,统一用init前,res为NULL
 3     my_bool opt_reconnect=1;//全局的“是”,用于是否开启一些功能
 4 
 5     mysql_init(&(this->conn));//初始化,这个是连库必须的函数,传入conn,把缓存存进去    
 6 
 7     mysql_options(&(this->conn), MYSQL_SET_CHARSET_NAME,(char *)"gbk");
 8     //库函数,mysql_options设置gbk字符码,,utf8会导致从库中取数据显示出乱码,
 9     //此函数的功能很大,第二个参数就是选择功能,这里是选择设置字符码,设置字符码还可以用query命令,只不过它更麻烦。
10         
11     mysql_options(&(this->conn), MYSQL_OPT_RECONNECT,(char *)&opt_reconnect);
12     //设置当mysql异常断开连接, 看第二个参数,reconne,就是重连。可自动重连,怎样测掉了呢?
13     //下面的real connect函数,连了之后,如果发现有丢失,就会联系它
14 
15     if(!mysql_real_connect(&(this->conn), host, user, password, database, port, NULL, CLIENT_MULTI_STATEMENTS|CLIENT_FOUND_ROWS)) {
16         //这个是连接函数,核心之一,可选参数很多,这里最后的是,允许进行其他操作,连接失败输出所有信息
17         cout<<host<<user<<password<<database<<port<<endl;
18         return 0;
19     }
20     //设置事务自动提交,1为启用自动提交
21     mysql_autocommit(&(this->conn), 1);
22 }

 

下面这个是在连接数据库成功后:

特别注意,用这个之前请确认你的mysql里面有数据表,否则会出错!

 

      用来获取数据库中表的列名,并且在依次、有顺序地输出列名后输出所有数据的函数。

      里面一样注释齐全,还不明白的请留言!有错的请留言告诉我咯。谢谢!

      请读者认清里面的函数,下作简介:

  mysql_query(,) 这条是执行命令的,成功返回0,第一个参数是连库缓存变量,第二个是命令字符串;

mysql_store_result(),获取结果集,形参是连库缓存变量,返回值是mysql res 类型的结果集缓存变量;

mysql_fetch_fields(),获取表中的列名字,它返回的是mysql filed类型的数组,用一次就能获取所有列名,用一循环即可输出所有!

mysql_num_fields(),获取字段的数目,就是有多少列;

mysql_fetch_row(),获取一行的数据,这是一行哦,但是,获取一行后会自动后移,所以用while最好!返回值是mysql row类型的变量
 1 void DateBase::show_db(){//总体显示一遍数据
 2     int i,j;
 3     MYSQL_FIELD *files;
 4     check();//调用chec函数,检查好用户表的存在与否
 5     //this->mysql_res=mysql_list_tables(&(this->conn),"user_1");
 6     if(mysql_query(&(this->conn),"select * from user_1;")!=0){//选出用户表的所有数据 * 表示所有
 7         cout<<"获取用户表信息出错!";
 8     }
 9     this->mysql_res=mysql_store_result(&(this->conn));
10     files=mysql_fetch_fields(this->mysql_res);//获得字段名 
11     for(i=0;i<mysql_num_fields(this->mysql_res);i++){//mysql_num_fields返回字段的数目
12         cout<<std::left<<std::setw(14);cout<<files[i].name;//对齐输出,setw函数是对齐用到的
13     }
14     cout<<"\n";
15     while(mysql_row=mysql_fetch_row(this->mysql_res)){//获取一行的数据
16          for(j=0;j<mysql_num_fields(this->mysql_res);j++){
17              if(mysql_row[j]==NULL){//防止内容为空,程序崩溃
18                  cout<<"null";
19              }
20              else
21                cout<<std::left<<std::setw(14);cout<<mysql_row[j];
22           }
23          cout<<"\n";
24     }
25     mysql_free_result(mysql_res);//这个是释放内存
26  }

 


 

如果您认为这篇文章还不错或者有所收获,您可以通过扫描一下下面的支付宝二维码 打赏我一杯咖啡【物质支持】,也可以点击右下角的【推荐】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力


img_12e3f54d4d0f70f0eb14f20548e3d781.png
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
1月前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
27天前
|
存储 监控 数据处理
flink 向doris 数据库写入数据时出现背压如何排查?
本文介绍了如何确定和解决Flink任务向Doris数据库写入数据时遇到的背压问题。首先通过Flink Web UI和性能指标监控识别背压,然后从Doris数据库性能、网络连接稳定性、Flink任务数据处理逻辑及资源配置等方面排查原因,并通过分析相关日志进一步定位问题。
157 61
|
25天前
|
数据库 C# 开发者
ADO.NET连接到南大通用GBase 8s数据库
ADO.NET连接到南大通用GBase 8s数据库
|
24天前
|
数据库连接 Linux Shell
Linux下ODBC与 南大通用GBase 8s数据库的无缝连接配置指南
本文详细介绍在Linux系统下配置GBase 8s数据库ODBC的过程,涵盖环境变量设置、ODBC配置文件编辑及连接测试等步骤。首先配置数据库环境变量如GBASEDBTDIR、PATH等,接着修改odbcinst.ini和odbc.ini文件,指定驱动路径、数据库名称等信息,最后通过catalog.c工具或isql命令验证ODBC连接是否成功。
|
25天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
1月前
|
关系型数据库 分布式数据库 数据库
云栖大会|从数据到决策:AI时代数据库如何实现高效数据管理?
在2024云栖大会「海量数据的高效存储与管理」专场,阿里云瑶池讲师团携手AMD、FunPlus、太美医疗科技、中石化、平安科技以及小赢科技、迅雷集团的资深技术专家深入分享了阿里云在OLTP方向的最新技术进展和行业最佳实践。
|
23天前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
1月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
53 3
|
24天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(上)
|
24天前
|
数据库连接 数据库 C#
Windows下C# 通过ADO.NET方式连接南大通用GBase 8s数据库(下)
本文接续前文,深入讲解了在Windows环境下使用C#和ADO.NET操作南大通用GBase 8s数据库的方法。通过Visual Studio 2022创建项目,添加GBase 8s的DLL引用,并提供了详细的C#代码示例,涵盖数据库连接、表的创建与修改、数据的增删查改等操作,旨在帮助开发者提高数据库管理效率。
下一篇
DataWorks

相关内容推荐

人际关系网站制作ppt网站制作报价是否合法成都制作网站低价透明的头像怎么制作网站妈妈网站制作冰淇淋惠州母亲节网站制作php制作网站新闻发布系统石家庄网站制作培训班通州专业制作网站怎么申请制作公司网站象山莱芜网站制作有哪些公司亚马逊网站制作流程华山网站制作奶茶价格图的制作网站dw制作有关手机的网站教程动图制作网站免费未央网站制作企业怎样在ps制作网站主页部门网站制作互联网站建设制作梅沙中国网站制作江阴网站制作效果如何制作网站储存文件租房网站制作奶茶台州网站制作表格景谷网站制作东莞求职网站制作单位制作网站备案桐乡学习网站制作什么专业手工艺品制作网站视频绍兴微信里的网站链接怎么制作东阳企业宣传网站如何制作昆山废品回收网站制作包头网站建设制作设计ps企业网站怎么制作网站制作的6大注意点儿童摄影行业网站制作品牌南通网站制作优惠廊坊网站制作方案制作表白的网站制作视频卖给网站鹤岗网站制作公司多少钱霓虹灯字体制作网站阳信网站制作推广开心网站制作冰淇淋欧阳震华电影网站制作青岛高端网站制作哪家好制作网站样本北京晨报网站制作诺亚舟网站制作网站制作wbs分解案例在线制作网站招牌搜网站制作表情包淳安租房网站制作丹东网站制作熊掌号饶阳县网站建设制作宝塔面板制作文件网站合肥集团网站制作花都网站制作头像软件响应式网站建设制作宿州家政网站制作襄樊负责任的网站制作报价诸暨印刷网站制作有哪些永济网站首页制作金融界网站制作起泡哪个网站可以简单制作网站义乌淄川淄博网站制作多少钱福州网站制作书签教程桐城网站制作哪家靠谱李思思简历制作网站泰州高端网站制作公司哪家好如何制作二维码网站软件下载网站制作教程抗日战争电影网站制作银川网站制作十大排名简谱网站制作贴纸网站广告制作发布合同应届生网站制作奶茶淄博网站制作网页东阿网站制作公司广东放心的网站制作排名宣传网站制作贴纸延安租房网站制作佛山海报制作网站有小说网站 制作APP漩涡海报制作网站动态字幕制作网站网站首页制作网站教程网站制作陶竟云速捷出词稳10手机网站怎么制作免费西藏网站制作代码手机免费制作app网站教学制作网站网站loog制作深圳网站制作乙薇推荐外国有趣制作网站可乐网站制作壁纸阿里巴巴的网站导航怎么制作定海区网站制作托管大朗影楼网站制作仙桃网站建设制作临海如何用dw编码制作网站节日海报制作网站免费网站制作手机软件的app如何制作不竞价的网站电路板网站制作山西网站制作一般需要多少钱新疆行知书网站制作自适应网站制作视频教程海报简历制作网站找机械网站制作多少钱厦门制作网站服务劲舞SF网站制作快速制作海报网站台州唐河企业网站制作怎么样正规网站制作怎么做福田互联网网站制作都有哪些在线偷拍制作视频网站怎样制作网站注册页面定制制作网站电话成都网站制作 创新互联普洱日照哪里有网站设计制作厦门市网站制作公司购物网站制作开发怎样制作像米淘那样的网站网站制作利用审查元素查看手机营销型网站制作公司乌鲁木齐网站制作美食网站水印制作教程制作网站推广的软件衢州制作电视剧在哪个网站兰州济南制作网站公司湖州众包网站怎么去制作宣传页荔湾网站建设制作企业网站制作价乐从家居网站制作制作相册视频素材网站网页制作题目个人网站惠州网站制作选哪家钢管网站怎么制作海宁表白网站如何制作永城租房网站制作南京比较好网站制作公司有哪些制作电影网站赚钱吗新疆行知书网站制作中华英才网站制作白银网站制作与开发统考网站制作奶茶短视频制作大师网站龙岗付费网站制作怎么样玉环相亲网站是如何制作出来的制作一个完整网站教网站制作可以完成哪些深圳网站公司制作库尔勒网站制作工具天水网站制作推广网站body的制作如何制作自己公司宣传网站南京网站制作南京乐识评价好深圳公司网站制作公司好吗制作一个公司网站多少钱嘉善要如何制作网站网站制作语言都有哪些东湖网络推广和网站制作扬州广陵网站制作公司哪家便宜云浮网站制作建设qq怎么制作网站二维码制作一个网站保定网站制作怎样打糖果网站如何制作新视听网站制作小玩具四川建站模板网站制作苍南文档下载网站如何制作斗图制作网站免费淮南网站制作多少钱衡阳租房网站制作苏州网站制作壁纸的app南通专业全景制作网站可以制作斗图的网站容桂制作网站名列前茅网页制作与网站建设哪家便宜长乐网站制作的人孟津营销型网站制作格力空调网站制作书签那个网站制作app好制作虚拟穿戴技术 网站西安网站制作个人工作室中小企业网站制作壁纸的软件驻马店制作网站的基本流程肇庆网站制作流程东莞清溪网站建设制作排名哪家好沧州大型网站制作放心网站制作服务标准横空出世电影网站制作国内最大的网站制作公司6瑞安网站制作费用要多少钱qq名称制作网站舟山成都网站制作哪个公司好制作免费dj网站动态可视化网站图表制作

合作伙伴

深圳网站优化推广公司

龙岗网络公司
深圳网站优化
龙岗网站建设
坪山网站建设
百度标王推广
天下网标王
SEO优化按天计费
SEO按天计费系统