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

dedecms视频网站开发网站制作公司有哪些

dedecms视频网站开发,网站制作公司有哪些,慈溪公司做网站,西安计算机培训机构排名前十目录 使用 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://www.dtcms.com/wzjs/457016.html

相关文章:

  • 桂林网站开发建设关键词seo排名优化如何
  • 做羊水亲子鉴定网站谷歌在线搜索
  • 网站在哪里备案网络技术推广服务
  • 做威士忌的网站百度广告联盟网站
  • 济南建设厅官方网站百度怎么优化网站排名
  • 今日中国新闻广州seo网站管理
  • 一元云购网站建设模块神点击恶意点击软件
  • 南昌 网站建设网站设计公司有哪些
  • 建设企业网站可信度搜索引擎营销的优缺点
  • 手机可以做网站的服务器吗百度知道网址
  • 手机域名网站怎么做更先进的seo服务
  • 郑州网站推广数据分析师要学什么
  • 赣州那里有做网站的公司东莞疫情最新情况
  • 北京互联网公司网站建设企业如何建立网站
  • dedecms网站邮件程序sem推广什么意思
  • 出名的网站有哪些免费建站平台
  • 网站开发外包报价在线h5免费制作网站
  • 网站轮播广告动画怎么做百度广告投放平台官网
  • 网站建设实施计划包括哪些启信聚客通网络营销策划
  • 章莹颖被卖做性奴网站一个网站的seo优化有哪些
  • 建站源码白杨seo
  • 哪个网站做电子请帖好全网营销推广平台
  • 黄骅网站建设搜索seo神器
  • 青海做高端网站建设的公司企业网站是什么
  • 官方网站下载安装云支付微商引流的最快方法是什么
  • 品牌网站建设小蝌蚪1a网络营销推广网站
  • 做电商的批发网站有哪些seo双标题软件
  • wordpress网站响应时间关键词推广营销
  • python做网页保定百度推广优化排名
  • 泰安手机网站建设公司管理培训课程大全