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

实际讲解做钓鱼网站企业营销策划包括哪些内容

实际讲解做钓鱼网站,企业营销策划包括哪些内容,渠道招商,wordpress 下载超链接C/C连接数据库 本篇文章意在简洁明了的在linux环境下使用C/C连接远程数据库,并对数据库进行增删查改等操作。我所使用的环境是centos7,不要环境除环境配置外,代码是大同小异的。完整代码在最底部!!! 1.前…

C/C++连接数据库

本篇文章意在简洁明了的在linux环境下使用C/C++连接远程数据库,并对数据库进行增删查改等操作。我所使用的环境是centos7,不要环境除环境配置外,代码是大同小异的。完整代码在最底部!!!

1.前提准备

在讲解如何使用代码连接数据库前,我们先来了解一下相关环境的问题。有些同学在写完代码后,会发现编译报如下错误。
在这里插入图片描述
我相信大家已经能看出问题所在了,那就是相关的lib库和include头文件在编译的时候链接不到。所以大家一定先配置好该链接属性后在进行代码的编译运行!!!

可通过mysql_get_client_info()方法验证lib和include引入是否成功,如下代码所示。

#include <stdio.h>
#include <mysql.h>
int main()
{printf("mysql client Version: %s\n", mysql_get_client_info());return 0;
}

2.必须先对数据库初始化!

//创建数据句柄。
MYSQL *my = mysql_init(nullptr);

3.链接数据库

const std::string host="127.0.0.1";
const std::string user="sja";
const std::string password = "*****";
const std::string db = "books";
const unsigned int port = 8888;
mysql_real_connect(my,//上面创建的数据库句柄MYSQL指针
host.c_str(),//目标数据库主机
user.c_str(),//目标数据库用户名
password.c_str(),//目标数据库用户密码
db.c_str(),//指定连接哪一个库
port, //目标数据库的端口号
//下面两个参数默认如下即可!
nullptr, 
0);

4.设置编码格式

连接的数据库默认是阿拉伯语,会有编码混乱问题,为了统一字符的编码我们要自行设置数据库的编码格式。

 mysql_set_character_set(my, "utf8");

5.访问数据库

5.1 对数据库增删改的访问

这一部分对数据库的访问相比查询来说不涉及数据的返回问题,所以这部分的操作也是最为简单容易的。话不多说直接上代码。

//这个三个是最简单的,只要sql执行完毕,就完了!std::string sql1 = "insert into test values (4, \'黎明\')";std::string sql2 = "delete from test where id=3";std::string sql3 = "update test set name=\'彬彬\' where id=2";int code =0;mysql_query(my, sql1.c_str());mysql_query(my, sql2.c_str());mysql_query(my, sql3.c_str());//对于返回值code,成功为0。

5.2 对数据库查找的访问

select 其实是最不好处理的!!select sql执行完,只是第一步,还需要对数据进一步解析!解析的过程是需要进行处理的,直接上代码。

//	1.解析数据 -- 获取行号和列号MYSQL_RES *result = mysql_store_result(my);int rows = mysql_num_rows(result);int cols = mysql_num_fields(result);std::cout << "行数: " << rows << ", 列数: " << cols << std::endl;//2.解析数据 -- 获取表中列名 -- 实际开发一般不用,仅仅是为了测试代码的完整性MYSQL_FIELD *fields = mysql_fetch_fields(result);for(int i = 0; i < cols; i++){std::cout << fields[i].name << "\t";}std::cout << std::endl;//3. 解析数据 -- 获取表中的数据 -- 重要for(int i = 0; i < rows; i++){MYSQL_ROW line = mysql_fetch_row(result); //获取完整的一行记录[可能包含了多列]for(int j = 0; j < cols; j++){std::cout << line[j] << "\t"; //将记录内部的多列字符串依次打印!}std::cout << std::endl;}

6.关闭数据库

其中上面的mysql_store_result函数会调用MYSQL变量中的st_mysql_methods中的 read_rows 函数指针来获取查询的结果。同时该函数会返回MYSQL_RES 这样一个变量,该变量主要用于保存查询的结果。同时该函数malloc了一片内存空间来存储查询过来的数据,所以我们一定要记的 free(result),不然是肯定会造成内存泄漏的。 一定注意这里的内存泄露问题,在关闭数据库前释放result!!!

//	关闭数据库free(result);mysql_close(my);

7.完整代码

#include <iostream>
#include <string>
#include <cstdio>
#include <mysql/mysql.h>const std::string host="127.0.0.1";
const std::string user="username";
const std::string password = "888888888";
const std::string db = "user_databases";
const unsigned int port = 8888;int main()
{//0. 创建mysql句柄MYSQL *my = mysql_init(nullptr);//1. 链接数据库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;}//1.1: 需要设置链接的编码格式mysql_set_character_set(my, "utf8");std::cout << "connect success" << std::endl;//2. 访问 数据库.test id, name//这个三个是最简单的,只要sql执行完毕,就完了!// std::string sql = "insert into test values (4, \'黎明\')";// std::string sql = "delete from test where id=3";// std::string sql = "update test set name=\'彬彬\' where id=2";//2.1 select 其实是最不好处理的!!select sql执行完,只是第一步,还需要对数据进一步解析!std::string sql = "select name from test where id = 4";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;//2.2 解析数据 -- 获取行号和列号MYSQL_RES *result = mysql_store_result(my);int rows = mysql_num_rows(result);int cols = mysql_num_fields(result);std::cout << "行数: " << rows << ", 列数: " << cols << std::endl;//2.3 解析数据 -- 获取表中列名 -- 一般不用,仅仅是为了测试代码的完整性MYSQL_FIELD *fields = mysql_fetch_fields(result);for(int i = 0; i < cols; i++){std::cout << fields[i].name << "\t";}std::cout << std::endl;//2.4 解析数据 -- 获取表中的数据 -- 重要for(int i = 0; i < rows; i++){MYSQL_ROW line = mysql_fetch_row(result); //获取完整的一行记录[可能包含了多列]for(int j = 0; j < cols; j++){std::cout << line[j] << "\t"; //将记录内部的多列字符串依次打印!}std::cout << std::endl;}//3. 关闭数据库free(result);mysql_close(my);return 0;
}
http://www.hrbkazy.com/news/7153.html

相关文章:

  • wx网站开发北京seo排名外包
  • 白云网站建设公私域流量运营管理
  • WordPress添加上传下载seo网址优化靠谱
  • 做网站日入100今日新闻摘抄10条简短
  • 门户网站和网站的区别宁波百度快照优化排名
  • 南京溧水城市建设集团网站西安seo包年服务
  • 做网站哪个编辑器好用百度排行榜风云
  • 网站建设哪家专业营销策略有哪几种
  • 长沙诚信做网站杭州百度推广开户
  • 网站开发论文课题论证重庆企业站seo
  • 毕业设计网站怎么做网址seo查询
  • 做高仿表网站容易被k吗免费生成短链接
  • 网站模网站备案查询
  • 网站大量死链广州网络推广万企在线
  • 网站统计平台网络营销的核心是什么
  • 餐饮团购网站建设搜索引擎收录
  • 建设商城网站制作软文编辑
  • 秦皇岛网站制作方案什么是网络营销含义
  • 安徽网站关键词优化打开免费百度啊
  • 做第三方库个人网站自己怎么制作一个网站
  • 网站维护多少钱百度资源搜索
  • 做阿里国际网站会有成效吗网络营销与策划
  • 承德市建设工程交易中心网站深圳seo排名优化
  • 免费海报制作网站国产最好的a级suv
  • 网站高速下载如何做四川seo快速排名
  • 有关网站建设的外文参考文献今日热搜头条
  • 检察院内部网站升级建设南昌seo排名扣费
  • 网站真人主持如何做好品牌推广工作
  • 淮安做网站的公司有哪些公司厦门seo服务
  • 建设银行杭州网站首页印度疫情最新消息