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

网站抓取诊断ip出错wordpress 去购买按钮

网站抓取诊断ip出错,wordpress 去购买按钮,南昌做小程序公司,常州网站建设招聘文章目录 C语言访问Mysql1. 环境设置2. mysql接口介绍(1) 初始化mysql_init()(2) 链接数据库mysql_real_connect(3) 下发mysql命令mysql_query()(4) 获取执行结果mysql_store_result(5) 释放结果集mysql_free_result()(6) 获取结果行数mysql_num_rows(7) 获取结果列数mysql_num…

文章目录

  • C语言访问Mysql
    • 1. 环境设置
    • 2. mysql接口介绍
      • (1) 初始化mysql_init()
      • (2) 链接数据库mysql_real_connect
      • (3) 下发mysql命令mysql_query()
      • (4) 获取执行结果mysql_store_result
      • (5) 释放结果集mysql_free_result()
      • (6) 获取结果行数mysql_num_rows
      • (7) 获取结果列数mysql_num_fields
      • (8) 获取列名mysql_fetch_fields
      • (9) 获取结果内容mysql_fetch_row
      • (10) 关闭mysql链接mysql_close
    • 3. 测试代码

C语言访问Mysql

1. 环境设置

环境设置这里我就简单介绍一下,参考我mysql环境安装的博客:MySQL环境安装_Ryujianli的博客-CSDN博客

如果你像我一样在linux下安装了mysql,就能在对应的目录下找到库和头文件

ls /lib64/mysql
ls /usr/include/mysql

在这里插入图片描述

如果你找不到,可以再安装一下

yum install mysql-devel

配置好环境后,直接打开vscode开始测试,要#include<mysql/mysql.h>引入mysql的头文件

注意makefile文件的写法:

mytest:test.ccg++ -o mytest test.cc -L/lib64/mysql -lmysqlclient -std=c++11 
.PHONY:clean
clean:rm -f mytest

测试代码:

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

如果上面代码能成功运行证明你的库引入成功

在这里插入图片描述

2. mysql接口介绍

(1) 初始化mysql_init()

要使用库,必须先进行初始化!

MYSQL * mysql_init(MYSQL *mysql)参数说明:  mysql设置为nullptr, 函数分配,初始化,并返回一个新的对象。
返回值:    成功返回一个MYSQL类型的对象, 失败返回nullptr

(2) 链接数据库mysql_real_connect

初始化完毕之后,必须先链接数据库,在进行后续操作。(mysql网络部分是基于TCP/IP的)

MYSQL *mysql_real_connect(MYSQL *mysql, const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned long clientflag);
参数说明:mysql: 你创建并初始化好的MYSQL类型的对象, 即mysql_init的返回值host: 这里使用本地环回地址,"127.0.0.1"user: 代表数据库的使用者passwd: userd的密码db: 代表你要连接的数据库名称port: mysql服务的端口号, 默认是3306unix_socket: unix套接字, 设置为nullptr代表这里是网络通信   clientflag: 设置为0
返回值:成功返回连接成功的MYSQL对象, 失败返回nullptr

第一个参数 MYSQL是 C api中一个非常重要的变量(mysql_init的返回值),里面内存非常丰富有port, dbname, charset等连接基本参数。它也包含了一个叫 st_mysql_methods的结构体变量,该变量里面保存着很多函数指针,这些函数指针将会在数据库连接成功以后的各种数据操作中被调用。mysql_real_connect函数中各参数,基本都是顾名思意。

建立好链接之后,获取英文没有问题,如果获取中文是乱码:设置链接的默认字符集是utf8,原始默认是latin1

mysql_set_character_set(myfd, "utf8");

(3) 下发mysql命令mysql_query()

int mysql_query(MYSQL *mysql, const char *q);参数说明: 第一个参数上面已经介绍过q: 代表你要执行的sql语句
返回值:成功返回0, 失败返回非0

(4) 获取执行结果mysql_store_result

sql执行完以后,如果是查询语句,我们当然还要读取数据,如果update,insert等语句,那么就看下操作成功与否即可。我们来看看如何获取查询结果: 如果mysql_query返回成功,那么我们就通过mysql_store_result这个函数来读取结果。原型如下:

MYSQL_RES *mysql_store_result(MYSQL *mysql);

MYSQL_RES的介绍:

  • 该函数会调用MYSQL变量中的st_mysql_methods中的 read_rows 函数指针来获取查询的结果

  • 。同时该函数会返回MYSQL_RES 这样一个变量,该变量主要用于保存查询的结果(调用mysql_store_result函数时是把存储的数据转储到MYSQL_RES中)。

  • 同时该函数malloc了一片内存空间来存储查询过来的数据,所以一定要使用mysql_free_result() 函数来释放,否则会造成内存泄漏。

  • 执行完mysql_store_result以后,其实数据都已经在MYSQL_RES变量中了。

在这里插入图片描述

MYSQL_RES叫做结果集,我们可以把想象成一个char**类型的,每一小块空间里存储的是一条记录中的某一个数据所以要用一个char *类型的指针去指向这一个数据,一行的数据就构成一条记录,一共有多少条记录就有多少行,每一行都会有一个二维指针去指向这一行

(5) 释放结果集mysql_free_result()

void mysql_free_result(MYSQL_RES *result)

(6) 获取结果行数mysql_num_rows

my_ulonglong mysql_num_rows(MYSQL_RES *res);

在这里插入图片描述

(7) 获取结果列数mysql_num_fields

unsigned int mysql_num_fields(MYSQL_RES *res);

(8) 获取列名mysql_fetch_fields

MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *res);

(9) 获取结果内容mysql_fetch_row

MYSQL_ROW其实是char **,可以当成一个二维数组来用

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);

在这里插入图片描述

(10) 关闭mysql链接mysql_close

void mysql_close(MYSQL *sock);

另外,mysql C api还支持事务等常用操作,大家下来自行了解:

my_bool STDCALL mysql_autocommit(MYSQL * mysql, my_bool auto_mode);
my_bool STDCALL mysql_commit(MYSQL * mysql);
my_bool STDCALL mysql_rollback(MYSQL * mysql);

3. 测试代码

前提:makefile文件的写法我在环境设置部分已经说明,在使用此代码测试前要为自己创建一个mysql下的普通账号并赋予其对特定数据库的所有权限,在我上一个博客中:

MySQL用户管理_Ryujianli的博客-CSDN博客

#include<iostream>
#include<mysql/mysql.h>
#include<string>const std::string host="127.0.0.1";
const std::string user="user_l";
const std::string password="1003898";
const std::string db="conn";
const unsigned int port=3306;int main()
{// std::cout<<"mysql client version: "<<mysql_get_client_info()<<std::endl;MYSQL* my=mysql_init(nullptr);if(nullptr ==my){std::cerr<< "init MySQL error" <<std::endl;return 1;}if(mysql_real_connect(my,host.c_str(),user.c_str(),password.c_str(),db.c_str(),port,nullptr,0)==nullptr){std::cerr<<"connect MySQL error"<<std::endl;return 2;}mysql_set_character_set(my,"utf8");// 增删改简单处理// std::string sql="insert into user (name,age,telephone) values ('张三', 19, '1523467')";// std::string sql="insert into user (name,age,telephone) values ('kitty', 29, '13234567')";// std::string sql="update user set name='Jimmy' where id=2";// std::string sql="delete from user where id=3";// 查的处理std::string sql="select * from user";int n=mysql_query(my,sql.c_str());if(n==0)std::cout<<sql<< " success " <<std::endl;else{std::cout<<sql<< " failed " <<std::endl;return 3;}MYSQL_RES*res=mysql_store_result(my);if(nullptr==res){std::cerr<< "mysql_store_result error" <<std::endl;return 3;}// 全部都是和结果集有关的, resint rows=mysql_num_rows(res);int fields=mysql_num_fields(res);std::cout<< "行: "<<rows<<std::endl;std::cout<< "列: "<<fields<<std::endl;// 属性MYSQL_FIELD*fields_array=mysql_fetch_fields(res);for(int i=0;i<fields;++i){std::cout<<fields_array[i].name<< "\t";}std::cout<< "\n";// 内容for(int i=0;i<rows;++i){MYSQL_ROW row= mysql_fetch_row(res);    // char**for(int j=0;j<fields;++j){std::cout<<row[j]<< "\t";    // *(row+j)}std::cout<< "\n";}  std::cout<<fields_array[0].db<<" "<<fields_array[0].table<<std::endl;// std::cout<<"connect success"<<std::endl;mysql_free_result(res);mysql_close(my);return 0;
}
http://www.yayakq.cn/news/971446/

相关文章:

  • 网站做全景图举例说明什么是网络营销
  • 做网站要提供营业执照吗wordpress版本回退
  • 哈尔滨网站定制公司二次开发收费需要高点
  • 中国纪检监察报总编辑咸阳网站建设seo
  • 网站如何设置404页面开工作室需要什么条件
  • 合肥 电子商务 网站推广网站制作排行榜
  • wordpress网站能APP吗seo网站模版
  • nike建设网站的目的网络建设公司经营范围
  • 如何在手机做网站wordpress 培训插件
  • 宠物网站制作费用明细杭州最新消息今天
  • 职业生涯规划大赛优秀作品网站建设优化服务流程
  • 网站建设方案设计网站制作公司-山而
  • 做海报找图片的网站中小企业网络规划与设计
  • 做网站月薪资多少钱做网站月入
  • 嘉兴市做网站优化全国代运营最好的公司
  • 建设英文网站的请示wordpress 503
  • 海淀网站开发洛阳做网站找哪家
  • wap建站程序哪个好王野天津音乐广播
  • 个人名义做网站能备案吗做seo的网站推广
  • 电子商务网站建设维护有没有欺骗国内著名展馆设计公司报价
  • 重庆做网站好的公司潍坊网站建设wfyckj
  • 云南住房和城乡建设厅网站wordpress 局域网 慢
  • 网站运营与维护是什么seo 网站关键词
  • 佛山网站设计是广东省建网站公司
  • 梅州新农村建设网站深汕特别合作区邮政编码
  • 潍坊手机网站本机网络ip做网站
  • 学校网站建设网站wordpress营销型大气
  • 湖北省建设银行网站6关于做芯片类招聘的网站
  • 网站建设及推广方案ppt模板商丘做网站的价格
  • 对企业网站建设的建议北京平面设计公司有哪些国企