当前位置: 首页 > wzjs >正文

软件正版化情况及网站建设情况好模版网站

软件正版化情况及网站建设情况,好模版网站,网站申请支付宝接口,腾讯广告一级代理名单目录 使用 yum 配置 mysqld 环境 查看 mysqld 服务的版本 创建 mysql 句柄 链接数据库 使用数据库 增加数据 修改数据 查询数据 获取查询结果的行数 获取查询结果的列数 获取查询结果的列名 获取查询结果所有数据 断开链接 C语言访问mysql数据库整体源码 通过…

目录

使用 yum 配置 mysqld 环境

查看 mysqld 服务的版本

创建 mysql 句柄 

链接数据库 

使用数据库 

增加数据 

修改数据

 查询数据

 获取查询结果的行数

 获取查询结果的列数 

获取查询结果的列名 

获取查询结果所有数据

断开链接 

C语言访问mysql数据库整体源码


        通过前段时间的 mysql 数据库的学习,我们知道了 mysql 数据库本质上就是一个网络服务,本期的主要内容在于讲解如何使用 C 语言相关的接口连接 mysqld 网络服务。

使用 yum 配置 mysqld 环境

        centos7 版本的操作系统使用一下指令安装 mysqld 服务的配置文件。

sudo yum install mysql-devel

        配置好之后,mysqld 相关的头文件在 /usr/include/mysql 目录下。我们连接 mysqld 服务时主要使用 mysql.h 头文件。

        配置好后。mysqld 对应的库文件在 /usr/lib64/mysql 下。

        在链接 mysqlclient 库时,需要使用 -L 字段指明库的路径。 

g++ -o $@ $^ -std=c++11  -L/usr/lib64/mysql -lmysqlclient

查看 mysqld 服务的版本

  • 使用 mysql_get_client_info() 函数查看 mysqld 云服务版本。 
  std::cout<<"client version: "<<mysql_get_client_info()<<std::endl;

        作者的版本是 mysql 5.7.44 版本。

创建 mysql 句柄 

  • 使用 mysql_init() 函数创建 mysql 句柄。
  MYSQL *my=mysql_init(nullptr);

链接数据库 

  • 使用 mysql_real_connect() 函数链接数据库。
#include<iostream>
#include<cstdio>
#include<mysql/mysql.h>const std::string host="127.0.0.1";
const std::string user="jd";
const std::string password="YJD010918madeinchina...";
const std::string db="study";
const unsigned int port=8088;int main()
{std::cout<<"client version: "<<mysql_get_client_info()<<std::endl;//1.创建mysql句柄MYSQL *my=mysql_init(nullptr);//2.链接数据库if(mysql_real_connect(my,host.c_str(),user.c_str(),password.c_str(),db.c_str(),port,nullptr,0)==nullptr){std::cout<<"connect failed!"<<std::endl;return 1;}std::cout<<"connect success!"<<std::endl;
}

        第一个参数为刚开始创建的 mysql 句柄,第二个参数为要访问的 mysqld 的 ip,第三个参数为使用哪个 mysql 用户访问数据库, 第四个参数为访问数据库的这个 mysql 用户的密码是多少,第四个参数为当前用户访问的数据库的名称,第五个参数为访问的 mysqld 的端口号,后面两个参数不需要了解。返回值为 MYSQL* 数据库句柄类型,如果为空则连接数据库失败,如果不为空则链接数据库成功。

使用数据库 

        数据库的使用其实就是对数据库表的使用,数据库表的使用包含四个部分数据记录的 增加,查询,修改,删除

        无论是 增加,查询,修改还是删除,都使用下面的函数进行操作。

 int mysql_query(MYSQL *mysql, const char *q);

        在对数据进行操作之前,我们应该先设置 mysql 句柄的编码格式。

 //设置句柄的编码格式mysql_set_character_set(my,"utf8");

增加数据 

        向 study 数据库中的 students 表中插入数据。

insert into students values (6,66,'张三','297599');

        成功插入。 

修改数据

        向 study 数据库中的 students 表中修改数据。 

update from students set name='李四' where id =6;

        成功修改。 

 查询数据

        查询数据是数据操作中较为复杂的一个操作,因为涉及到了将数据查询出来,并将数据显示出来。查询出来数据很简单,但是复杂的是将查询出来的数据显示出来,如何显示出来,我们需要使用 多个接口共同搭配使用将插叙出来的数据显示出来。

        查询 students 表中的所有记录。

select * from students;

        使用下述函数读取  mysql_query()  接口执行之后,mysql 句柄中查询的结果。

MYSQL_RES *mysql_store_result(MYSQL *mysql);
     MYSQL_RES* res=mysql_store_result(my);

        读取的结果存储在了 MYSQL_RES* 类型的返回值指向的特定结构体中。后续使用这个返回值获取相关的结果字段。

 获取查询结果的行数

        使用以下函数查询行数。

 my_ulonglong mysql_num_rows(MYSQL_RES *res);
    //4.2获取查询的行数unsigned int rows = mysql_num_rows(res);std::cout << rows << std::endl;

        查询列数成功。 

 获取查询结果的列数 

        使用以下函数查询列数。

 unsigned int mysql_num_fields(MYSQL_RES *res);
    unsigned int fields = mysql_num_fields(res);std::cout << fields << std::endl;

        查询列数成功。

获取查询结果的列名 

        使用以下函数查询列名。

 MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *res); 
//4.3获取查询记录的每一列的列名称MYSQL_FIELD* fields_name=mysql_fetch_field(res);for(int i=0;i<fields;i++){std::cout<<fields_name[i].name<<"\t";}std::cout<<std::endl;

        查询结果的列名称获取成功。

获取查询结果所有数据

        1.先使用以下函数获取查询结果的所有行数据。

 MYSQL_ROW mysql_fetch_row(MYSQL_RES *result); 

        可以将 MYSQL_ROW 看做一个二维数组。

for(int i=0;i<rows;i++){MYSQL_ROW lines=mysql_fetch_row(res);//line[i]表示第几行的数据,直接获取是无法获取的,因为无法知道这一行数据的列数//就相当于如果只知道二维数组的行标不知道列表也是无法访问二维数组的元素的}

        2.通过列数,然后再访问每行的每个元素,最终实现所有查询结果的访问。但是要注意,每列的元素都不应为空,否则会出现一些异常打印的问题。

        基于此,对 students 中为空的字段进行修改。

 std::cout << std::endl;for (int i = 0; i < rows; i++){MYSQL_ROW lines = mysql_fetch_row(res);// line[i]表示第几行的数据,直接获取是无法获取的,因为无法知道这一行数据的列数// 就相当于如果只知道二维数组的行标不知道列表也是无法访问二维数组的元素的for (int j = 0; j < fields; j++){std::cout << lines[j] << "\t";}std::cout << std::endl;}

        查询结果的所有数据获取成功。 

断开链接 

        使用以下函数断开链接。

 void mysql_close(MYSQL *sock);
    free(res);mysql_close(my);

C语言访问mysql数据库整体源码

#include <iostream>
#include <stdlib.h>
#include <string>
#include <mysql/mysql.h>const std::string host = "127.0.0.1";
const std::string user = "jd";
const std::string password = "YJD010918madeinchina...";
const std::string db = "study";
const unsigned int port = 8088;int main()
{std::cout << "client version: " << mysql_get_client_info() << std::endl;// 1.创建mysql句柄MYSQL *my = mysql_init(nullptr);// 2.链接数据库if (mysql_real_connect(my, host.c_str(), user.c_str(), password.c_str(), db.c_str(), port, nullptr, 0) == nullptr){std::cout << "connect failed!" << std::endl;return 1;}// 3.设置链接的编码格式mysql_set_character_set(my, "utf8");std::cout << "connect success!" << std::endl;// 4.进行数据库表操作std::string sql = "select * from students";int code = mysql_query(my, sql.c_str());if (code != 0){std::cout << "execute: " << sql << "failed!" << std::endl;return 2;}std::cout << "execute: " << sql << " success!" << std::endl;// 4.1获取查询的结果到res中MYSQL_RES *res = mysql_store_result(my);// 4.2获取查询的行数int rows = mysql_num_rows(res);std::cout << rows << std::endl;int fields = mysql_num_fields(res);std::cout << fields << std::endl;// 4.3获取查询记录的每一列的列名称MYSQL_FIELD *fields_name = mysql_fetch_field(res);for (int i = 0; i < fields; i++){std::cout << fields_name[i].name << "\t";}// 4.4获取查询结果的每一行的数据std::cout << std::endl;for (int i = 0; i < rows; i++){MYSQL_ROW lines = mysql_fetch_row(res);// line[i]表示第几行的数据,直接获取是无法获取的,因为无法知道这一行数据的列数// 就相当于如果只知道二维数组的行标不知道列表也是无法访问二维数组的元素的for (int j = 0; j < fields; j++){std::cout << lines[j] << "\t";}std::cout << std::endl;}//5.断开链接mysql_close(my);
}

        至此,C语言链接数据库的操作全部完成。

        本期内容到此结束^_^


文章转载自:

http://vA2fFO9q.mgbcf.cn
http://8HFPDFg8.mgbcf.cn
http://WJEsytRL.mgbcf.cn
http://7bjIEwIp.mgbcf.cn
http://ZcXlB1zP.mgbcf.cn
http://TysalN7j.mgbcf.cn
http://VyXxhaaG.mgbcf.cn
http://LnZJlYEL.mgbcf.cn
http://qOhwW562.mgbcf.cn
http://TgsAIEO6.mgbcf.cn
http://s8edsTWQ.mgbcf.cn
http://5zUGMlJl.mgbcf.cn
http://GHi7SYD9.mgbcf.cn
http://6kyBcYeG.mgbcf.cn
http://eK3cORZg.mgbcf.cn
http://PFNBXAHs.mgbcf.cn
http://yyIJV3sp.mgbcf.cn
http://lt1L7mGd.mgbcf.cn
http://l75eYIZV.mgbcf.cn
http://o1xLEhAM.mgbcf.cn
http://pagezT2d.mgbcf.cn
http://54HQNauD.mgbcf.cn
http://AqbUcuEV.mgbcf.cn
http://6DOKyR6O.mgbcf.cn
http://PVZEiXkK.mgbcf.cn
http://RFw8AGmt.mgbcf.cn
http://2yTYLWJj.mgbcf.cn
http://KMzbWcCI.mgbcf.cn
http://7a9u24K4.mgbcf.cn
http://hKyAIXea.mgbcf.cn
http://www.dtcms.com/wzjs/671237.html

相关文章:

  • 架子鼓谱那个网站做的好网站图片切换js代码
  • 先进网站建设有哪些地方旅游网站模板
  • 在线网站cms识别泰安市平台公司
  • 前台网站模板修改新wordpress密码
  • 备案ip 查询网站查询北京西路做网站的公司
  • 做广告联盟怎么做网站安庆经济开发区人才网
  • 网络运维和网站开发哪个好帝国网站网站手机版怎么做
  • 贵阳网站开发wordpress配图api
  • 成都市住房和城乡建设局网站网站建设和网页设计视频教程
  • 个人网站 虚拟主机价格免费的网络会议系统
  • 网站建设政务新媒体wordpress发布文章慢
  • 网站建设mfdos 优帮云百度指数功能
  • 网站维护页面模板深圳品牌折扣店
  • 百度静态网站西安有什么好玩的地方景点推荐
  • php网站开发代码网站设计与制作是什么专业
  • flashxml网站模板宣城做网站
  • 网站代码规范性电商网站设计公司排名
  • 福建定制网站开发网站外链有多重要
  • 一个ip 做2个网站吗长沙旅游攻略必去的十大景点
  • 微网站 pc端网站开发网站备案找回密码
  • 网站建设维护培训wordpress淘宝优惠券
  • 无锡网站建设企业wordpress 电子商城 模板
  • 深圳网站设计 建设首选深圳市wordpress快讯
  • 网站平台建设策划做竞价托管的公司
  • 湖北葛洲坝建设工程网站七个php源码下载的网站
  • 仿站怎么做员工培训
  • 山西公司怎么做网站wordpress sql文章
  • 天猫网站网址杭州租车网站建设
  • 成都建立公司网站seo排名优化
  • 长春建站模板搭建杭州餐饮团购网站建设