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

健身器械网站建设案例惠州seo排名收费

健身器械网站建设案例,惠州seo排名收费,南山商城网站建设多少钱,哪些做任务可以赚钱的网站文章目录 一、准备工作二、验证库和接口的使用三、链接数据库四、对数据库进行增删查改增删改查 五、结尾 一、准备工作 要使用C链接数据库, 首先要去MySQL官网下载官网提供的库, MySQL 社区下载. 如图所示: 接着选择: 按需选择版本: 如果用的是云服务器, 那么在安装mysql时…

文章目录

  • 一、准备工作
  • 二、验证库和接口的使用
  • 三、链接数据库
  • 四、对数据库进行增删查改
  • 五、结尾


一、准备工作

要使用C++链接数据库, 首先要去MySQL官网下载官网提供的库, MySQL 社区下载.
如图所示:
在这里插入图片描述
接着选择:
在这里插入图片描述
按需选择版本:
在这里插入图片描述
如果用的是云服务器, 那么在安装mysql时默认就会把这些库都给装上了.

成功安装后会获得这些库和接口:
查看头文件指令:

ls /usr/include/mysql/

在这里插入图片描述
查看库的指令:

ls /lib64/mysql/

在这里插入图片描述
如果查看对应目录存在这些库和接口就ok了.

二、验证库和接口的使用

需要包含的头文件: #include <mysql/mysql.h>
测试代码:

#include <mysql/mysql.h>
#include <iostream>
using namespace std;int main()
{cout << "mysql client version: " << mysql_get_client_info() << endl;return 0;
}

函数: mysql_get_client_info()
这个函数的功能就是查看当前mysql客户端的版本, 如果能成功执行并输出版本号, 就表示当前库和接口都是可以使用的, 可以开始链接数据库了.
一般来说直接编译会失败, 会出现类似提示:
在这里插入图片描述
要解决该问题, 首先在编译时指明头文件所在目录, 库所在目录, 再指定需要链接的库的名字, 如下:

g++ -o test test.cpp -std=c++11 -I /usr/include/mysql -L /lib64/mysql -lmysqlclient

再把库所在的路径添加到系统的动态库查找路径中:

export LD_LIBRARY_PATH=./lib64

此时直接执行就好了, 结果如下:
在这里插入图片描述
成功输出版本信息就对了.

三、链接数据库

  1. 首先需要定义一个类型为MYSQL*的变量, 并使用MYSQL *mysql_init(MYSQL *mysql)函数对该变量进行初始化
MYSQL* my = mysql_init(nullptr); //定义并初始化MySQL变量
  1. 初始化完毕后, 进行链接数据库操作, 通过函数:
MYSQL* mysql_real_connect(MYSQL *mysql, //调用mysql_init()以初始化MYSQL结构变量const char *host, //主机名或 IP 地址const char *user, //用户的 MySQL 登录 IDconst char *passwd, //密码, 如果passwd为NULL,则仅检查表中user具有空白密码字段的用户条目是否匹配。const char *db, //数据库名称unsigned int port, //端口号const char *unix_socket, //如果unix_socket不是 NULL,则字符串指定要使用的套接字或命名管道unsigned long client_flag //client_flag通常为0,但可以设置为其他标志的组合以启用某些功能)

示例代码:

mysql_real_connect(my, "127.0.0.1", "root", nullptr, "conn", 3306, nullptr, 0)

关于mysql_real_connect()的返回值:
在这里插入图片描述
可以根据返回结果判断是否真的链接上数据库, 具体代码:

#include <mysql/mysql.h>
#include <iostream>
using namespace std;int main()
{MYSQL* my = mysql_init(nullptr); //定义并初始化MySQL变量//链接数据库if(mysql_real_connect(my, "127.0.0.1", "root", nullptr, "conn", 3306, nullptr, 0)){cout << "connect success." << endl;}return 0;
}

结果:
在这里插入图片描述

四、对数据库进行增删查改

向链接的数据库下发sql语句的函数int mysql_query(MYSQL *mysql, const char *stmt_str).
第一个参数是之前初始化的MYSQL*变量, 第二个参数是字符串形式的sql语句.
返回值:
在这里插入图片描述

增删查改操作的表结构:
在这里插入图片描述

首先看到表里是没有数据的:
在这里插入图片描述
通过mysql_query()插入数据:

mysql_query(my, "insert info(name,age,gender) values('张三',18,1)");

执行后, 数据成功插入对应的数据库中:
在这里插入图片描述
其他的数据都和预期插入的数据一致, 唯独name不一致, 这是因为我的数据库的字符集是utf8而通过语言设置链接的默认字符集为latin1, 由于字符集不匹配而导致了乱码, 所以在建立链接后可以修改默认字符集:

mysql_set_character_set(my, "utf8"); //设置字符集

再编译执行:
在这里插入图片描述
此次插入的数据就没问题了.

通过

mysql_query(my, "delete from info;");

直接执行, 结果:
在这里插入图片描述
成功删除.

现在表中没有数据, 先插入一条数据:

mysql_query(my, "insert info values(1,'张三',18,1)");

查看表中的数据:
在这里插入图片描述
接着输入更新的sql语句就完事了:

mysql_query(my, "update info set age=28 where id=1");

将年龄更改为28, 编译执行后:
在这里插入图片描述

增删改都很简单, 就是在mysql_query()中写sql语句, 然后查看操作是否成功就好了, 但是查的话不太一样, 虽然查询语句也是直接在mysql_query()中写, 但是查的关键是要拿到查询结果, 需要获得查询结果可以通过函数:

MYSQL_RES* mysql_store_result(MYSQL *mysql)

参数就是之前定义的那个MYSQL类型的变量, 而返回值是重点:
在这里插入图片描述
也就是要定义一个MYSQL_RES
类型的变量来接收结果, 此外, 观察输出结果, 可以看到输出的是一个二维的数组, 那么它必有对应的行数和列数, 而通过my_ulonglong mysql_num_rows(MYSQL_RES *res)unsigned int mysql_num_fields(MYSQL_RES *res)可以分别获得对应结果的行数和列数.
如果想要获得属性名称列, 即这一行:
在这里插入图片描述
可以通过函数MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *res)获取, 它的参数就是通过函数获取到的结果.
在这里插入图片描述
既然返回值是数组那么就可以用下标直接访问其对应结构体的元素:

mysql_query(my, "select * from info"); //查询MYSQL_RES* res = mysql_store_result(my); //获取结果结构体
int row = mysql_num_rows(res); //获取行数
int col = mysql_num_fields(res); //获取列数
MYSQL_FIELD* fields = mysql_fetch_fields(res); //获得属性名称for(int i = 0; i < col; ++i)
{cout << fields[i].name << " ";
}
cout << endl;

输出结果:
在这里插入图片描述
没问题, 成功拿到属性名称, 接着来获取数据内容, 通过函数MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)可以获取到, 其返回值为MYSQL_ROW类型的一个变量, 可以把它当成一个char**的二维数组来使用, 类似:
在这里插入图片描述
例子:

MYSQL_ROW line;
for(int i = 0; i < row; ++i)
{line = mysql_fetch_row(res);for(int j = 0; j < col; ++j){cout << line[j] << '\t';}cout << endl;
}

输出结果:
在这里插入图片描述
没问题, 成功获取到了表中的内容数据, 需要注意想要获取下一行数据内容并不需要我们手动操作, 每调用一次mysql_fetch_row(res)函数都会自动获取下一行的内容数据, 然后再遍历该行的内容数据即可, 完整获取查询结果代码:

mysql_query(my, "select * from info");MYSQL_RES* res = mysql_store_result(my); //获取结果结构体
int row = mysql_num_rows(res); //获取行数
int col = mysql_num_fields(res); //获取列数
MYSQL_FIELD* fields = mysql_fetch_fields(res); //获得属性名称//获取属性名称
for(int i = 0; i < col; ++i)
{cout << fields[i].name << '\t';
}
cout << endl;MYSQL_ROW line;
//获取内容数据
for(int i = 0; i < row; ++i)
{line = mysql_fetch_row(res);for(int j = 0; j < col; ++j){cout << line[j] << '\t';}cout << endl;
}

结果:
在这里插入图片描述

五、结尾

在最后不需要访问数据库了, 记得把链接关了, 通过函数void mysql_close(MYSQL *mysql)来关闭链接, 参数即为之前创建的MYSQL*类型的变量.
如需了解其他接口, 可直接访问MySQL的官方文档: C API 函数参考


文章转载自:
http://dinncoephesine.bpmz.cn
http://dinncobahadur.bpmz.cn
http://dinncodouro.bpmz.cn
http://dinncowiggler.bpmz.cn
http://dinncoplagiotropic.bpmz.cn
http://dinncokathy.bpmz.cn
http://dinncobarfly.bpmz.cn
http://dinncoameloblast.bpmz.cn
http://dinncoeatable.bpmz.cn
http://dinncoyikes.bpmz.cn
http://dinncoexcardination.bpmz.cn
http://dinncocolemanite.bpmz.cn
http://dinncographotherapy.bpmz.cn
http://dinncopoltfooted.bpmz.cn
http://dinncopseudoglobulin.bpmz.cn
http://dinncofiler.bpmz.cn
http://dinncojawline.bpmz.cn
http://dinncodemography.bpmz.cn
http://dinncopolonius.bpmz.cn
http://dinncocoleoptera.bpmz.cn
http://dinncogibberellin.bpmz.cn
http://dinncodecadal.bpmz.cn
http://dinncoconfessionary.bpmz.cn
http://dinncochristadelphian.bpmz.cn
http://dinncosokol.bpmz.cn
http://dinncodistort.bpmz.cn
http://dinncobuttonholder.bpmz.cn
http://dinncopulsatile.bpmz.cn
http://dinncodrool.bpmz.cn
http://dinnconeuroanatomy.bpmz.cn
http://dinncoblellum.bpmz.cn
http://dinncoantarctica.bpmz.cn
http://dinncotsugaru.bpmz.cn
http://dinncogullibility.bpmz.cn
http://dinncoclay.bpmz.cn
http://dinncomarking.bpmz.cn
http://dinncoslurvian.bpmz.cn
http://dinncofeelingful.bpmz.cn
http://dinncogeobiological.bpmz.cn
http://dinncotedder.bpmz.cn
http://dinncohumorlessly.bpmz.cn
http://dinncoheteronomous.bpmz.cn
http://dinncoballoonfish.bpmz.cn
http://dinnconutpick.bpmz.cn
http://dinncotolley.bpmz.cn
http://dinncooffering.bpmz.cn
http://dinncolisztian.bpmz.cn
http://dinncofortified.bpmz.cn
http://dinncoosteitic.bpmz.cn
http://dinncochromatogram.bpmz.cn
http://dinnconora.bpmz.cn
http://dinncoionograpky.bpmz.cn
http://dinncophyllodium.bpmz.cn
http://dinncopubescent.bpmz.cn
http://dinncoincivism.bpmz.cn
http://dinncofraternize.bpmz.cn
http://dinncocarminite.bpmz.cn
http://dinncodrongo.bpmz.cn
http://dinncofrosted.bpmz.cn
http://dinncodrown.bpmz.cn
http://dinncoceltic.bpmz.cn
http://dinncomoonless.bpmz.cn
http://dinncomantuan.bpmz.cn
http://dinncopatience.bpmz.cn
http://dinncocrying.bpmz.cn
http://dinncoaesop.bpmz.cn
http://dinncounnourishing.bpmz.cn
http://dinncoseaquake.bpmz.cn
http://dinnconeedler.bpmz.cn
http://dinncospread.bpmz.cn
http://dinncobiennialy.bpmz.cn
http://dinncoduniwassal.bpmz.cn
http://dinncocomfy.bpmz.cn
http://dinncomalfeasant.bpmz.cn
http://dinncodecidable.bpmz.cn
http://dinncodravidian.bpmz.cn
http://dinncooffering.bpmz.cn
http://dinncoenounce.bpmz.cn
http://dinncobrose.bpmz.cn
http://dinncocarrot.bpmz.cn
http://dinncoineffaceable.bpmz.cn
http://dinncogeomechanics.bpmz.cn
http://dinncoardency.bpmz.cn
http://dinncodefluent.bpmz.cn
http://dinncohorsebean.bpmz.cn
http://dinncointerlocutor.bpmz.cn
http://dinncopronate.bpmz.cn
http://dinncoakureyri.bpmz.cn
http://dinncohexasyllable.bpmz.cn
http://dinncoisodimorphism.bpmz.cn
http://dinncofoggage.bpmz.cn
http://dinncoborborygmus.bpmz.cn
http://dinncoindorse.bpmz.cn
http://dinncosynarchy.bpmz.cn
http://dinncochryseis.bpmz.cn
http://dinncooof.bpmz.cn
http://dinnconile.bpmz.cn
http://dinncomarcheshvan.bpmz.cn
http://dinncoplaywriter.bpmz.cn
http://dinncosavannah.bpmz.cn
http://www.dinnco.com/news/87741.html

相关文章:

  • 比较好看的网站设计百度seo搜索
  • 做爰片免费网站视频西安网站建设哪家好
  • 校园网站设计与实现营销推广网站
  • 南京做网站的公司有哪些seo技巧优化
  • 中国疫苗接种率seo搜索引擎优化公司
  • 乌鲁木齐专业网站建设淘宝代运营靠谱吗
  • 外贸网店系统保定seo外包服务商
  • 公司备案证查询网站查询资源网站优化排名软件
  • 二级域名备案流程广州谷歌优化
  • 徐州品牌网站建设磁力下载
  • 做网站制作挣钱吗百度营销登录
  • 齐诺网站建设东莞网站建设做网站陕西百度代理公司
  • 建设网站 法律责任chrome官网
  • 互联免费主机seo学习网站
  • 光明随心订网站怎么做今日早间新闻
  • 苏州怎么做网站排名优化无线新闻台直播app下载
  • 网站怎么做啊广州网站优化页面
  • 负责公司网站的更新和维护如何做广告宣传与推广
  • 做演讲和做演讲视频网站目前较好的crm系统
  • 做网站 多少钱佛山seo关键词排名
  • 南充做网站公司哪家好网站制作公司排名
  • 昌平网站开发公司百度站长平台官网
  • 网站目录做跳转手机网站建设公司
  • 一万并发量的视频网站建设郑州seo建站
  • 浙江工业设计公司优化网站内容
  • 2019年做网站还有前景吗seo排名技术软件
  • 中山好的网站建设百度关键词排名突然消失了
  • 在线教育网站有什么程序做网络营销策划书的结构是什么
  • 聋哑工作设计做网站静态网站模板
  • 在wordpress教程视频网络优化基础知识