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

宁波建设网公众查询seo网络优化专员

宁波建设网公众查询,seo网络优化专员,wordpress跟新到5.0.1是英文,软件界面设计软件稍等更新图片。。。。 文章目录 安装 MySQL 库连接 MySQLMYSQL 类创建 MySQL 对象连接数据库关闭数据库连接示例 发送命令设置编码格式插入、删除或修改记录查询记录示例 参考资料 安装 MySQL 库 在 CentOS7 下#xff0c;使用命令安装 MySQL#xff1a; yum install mysq…稍等更新图片。。。。 文章目录 安装 MySQL 库连接 MySQLMYSQL 类创建 MySQL 对象连接数据库关闭数据库连接示例 发送命令设置编码格式插入、删除或修改记录查询记录示例 参考资料 安装 MySQL 库 在 CentOS7 下使用命令安装 MySQL yum install mysql-devel在/usr/include可以看到一个mysql新目录里面存放的是 mysql 的头文件。另外在 /lib64/mysql/ 以及 /usr/lib64/mysql 目录下存放了 mysql 的动态和静态库。 用一个 MySQL 库提供的接口验证 MySQL 库是否安装成功 #include iostream #include mysql/mysql.husing namespace std;int main() {cout mysql version: mysql_get_client_info() endl;return 0; }编译 g sql.cc -o sql -I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient编译选项中关于库的使用 -I用于指明头文件的搜索路径。-L用于指明库文件的搜索路径。-l用于指明需要连接库文件路径下的哪一个库。 因为这个库没有在链接的默认目录/usr/lib64下所以作为第三方导入的库在编译时需要显式地指定-L/usr/lib64/mysql同理头文件不在默认目录/usr/include下所以要显式地指定-I/usr/include/mysql。在这个目录下存在名为mysqlclient的第三方库同样需要用-l显式地声明。 只要正常运行上面的程序那就表明库的链接没有问题剩下的就是简单的 API 使用。 连接 MySQL MYSQL 类 在使用 MySQL 提供的接口之前需要了解一下这个重要的类。 MYSQL类是一个非常核心的结构体它用于表示与 MySQL 服务器的一个连接实例。在客户端程序中这个结构体用来保存客户端与数据库服务器之间连接的所有必要信息包括但不限于 服务器的地址用户名和密码正在使用的数据库网络连接的状态和配置错误信息和错误码查询结果选项设置 在mysql.h中可以查看 MYSQL 结构体的定义了解即可 typedef struct st_mysql {NET net; /* Communication parameters */unsigned char *connector_fd; /* ConnectorFd for SSL */char *host,*user,*passwd,*unix_socket,*server_version,*host_info;char *info, *db;struct charset_info_st *charset;MYSQL_FIELD *fields;MEM_ROOT field_alloc;my_ulonglong affected_rows;my_ulonglong insert_id; /* id if insert on table with NEXTNR */my_ulonglong extra_info; /* Not used */unsigned long thread_id; /* Id for connection in server */unsigned long packet_length;unsigned int port;unsigned long client_flag,server_capabilities;unsigned int protocol_version;unsigned int field_count;unsigned int server_status;unsigned int server_language;unsigned int warning_count;struct st_mysql_options options;enum mysql_status status;my_bool free_me; /* If free in mysql_close */my_bool reconnect; /* set to 1 if automatic reconnect *//* session-wide random string */char scramble[SCRAMBLE_LENGTH1];my_bool unused1;void *unused2, *unused3, *unused4, *unused5;LIST *stmts; /* list of all statements */const struct st_mysql_methods *methods;void *thd;/*Points to boolean flag in MYSQL_RES or MYSQL_STMT. We set this flag from mysql_stmt_close if close had to cancel result set of this object.*/my_bool *unbuffered_fetch_owner;/* needed for embedded server - no net buffer to store the info */char *info_buffer;void *extension; } MYSQL;MYSQL 对象中的 methods 成员是一个结构体变量该变量里面保存着很多函数指针这些函数指针将会在数据库连接成功以后的各种数据操作中被调用。 创建 MySQL 对象 MYSQL* mysql_init(MYSQL *mysql);该函数用来分配或者初始化一个 MySQL 对象用于连接 MySQL 服务器。如果传入的参数是 NULL那么 mysql_init 将自动为你分配一个 MySQL 对象并返回。如果传入的参数是一个地址那么 mysql_init 将在该地址处帮你完成初始化。 连接数据库 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_init 函数创建的 MySQL 对象。host 表示需要连接的 MySQL 服务器的 IP 地址127.0.0.1表示连接本地 MySQL 服务器。user 表示连接 MySQL 服务器时所使用用户的用户名。passwd 表示连接 MySQL 服务器时所使用用户的密码db 表示连接 MySQL 服务器后需要使用的数据库。port 表示连接的 MySQL 服务器所对应的端口号。unix_socket 表示连接时应该使用的套接字或命名管道通常设置为 NULL。clientflag 可以设置为多个标志位的组合表示允许特定的功能通常设置为 0。 返回值说明 如果连接数据库成功则返回一个 MySQL 对象该对象与第一个参数的值相同。如果连接数据库失败则返回 NULL。 关闭数据库连接 void mysql_close(MYSQL *sock);其中 该函数的参数就是连接数据库前调用 mysql_init 创建的 MySQL 对象。如果传入的 MySQL 对象是 mysql_init 自动创建的那么调用 mysql_close 时就会释放这个对象。 示例 在 MySQL 中首先有一个新用户 grant all on curd_db.* to new_user% identified by 12345;用户名是new_user%表示任意主机的用户grant all表示它被授予所有权限在curd.db数据库下密码是12345。 在本地测试 #include iostream #include string #include mysql/mysql.h using namespace std;const string host localhost; const string user new_user; const string passwd 12345; const string db curd_db; const int port 3306;int main() {// 1、创建 MySQL 对象MYSQL *mySQL mysql_init(nullptr);// 2、连接数据库if (mysql_real_connect(mySQL, host.c_str(), user.c_str(), passwd.c_str(), db.c_str(), port, nullptr, 0) nullptr){cerr 数据库连接失败 endl;exit(1);}cout 数据库连接成功 endl;// 3、关闭数据库mysql_close(mySQL);cout 数据库关闭成功 endl;return 0; }编译并运行 发送命令 int mysql_query(MYSQL *mysql, const char *stmt_str);数用于向 MySQL 服务器发送一个查询或命令执行指定的 SQL 语句。 参数说明 MYSQL *mysql指向 MYSQL 结构体的指针这个结构体代表了与 MySQL 服务器的一个连接。const char *stmt_str要执行的 SQL 语句的字符串。 返回值 成功执行时返回 0。出现错误时返回非 0 值。 设置编码格式 在连接数据库之后需要统一客户端和服务器的编码格式避免在数据交互过程中出现乱码设置编码格式的函数如下 int mysql_set_character_set(MYSQL *mysql, const char *csname);参数说明 mysql 表示在连接数据库前调用 mysql_init 函数创建的 MySQL 对象。csname 表示要设置的编码格式如utf8。 返回值说明 返回值为 0 表示设置成功否则表示设置失败。 插入、删除或修改记录 在 mysql_query 函数中向 MySQL 发送 INSERT SQL int main() {// ...cout 数据库连接成功 endl;// 设置编码mysql_set_character_set(mySQL, utf8);// 插入记录string sql insert into account values(4,小李,30,400);if (mysql_query(mySQL, sql.c_str()) ! 0){cout 插入数据失败 endl;exit(2);}// ...return 0; }数据被成功插入到表中。 类似地可以删除和修改记录 string sql update account set balance222 where id2;string sql delete from account where id4;查询记录 对于 mysql_query 函数而言插入、删除和修改操作都很简单只要将 SQL 字符串作为参数传入即可不需要返回值。但是 SELECT 查询需要返回结果这需要使用到 MYSQL_RES 对象。 MYSQL_RES* mysql_store_result(MYSQL *mysql);该函数会调用指定 MySQL 对象中对应的函数指针来获取查询结果并将获取到的查询结果保存到 MYSQL_RES 变量中进行返回。需要注意的是MYSQL_RES 变量的内存空间是 malloc 出来的因此在使用完后需要调用 free 函数进行释放否则会造成内存泄露。 MYSQL_RES 变量中保存了查询得到的各种信息其类型定义如下 typedef struct st_mysql_res {my_ulonglong row_count;MYSQL_FIELD *fields;MYSQL_DATA *data;MYSQL_ROWS *data_cursor;unsigned long *lengths; /* column lengths of current row */MYSQL *handle; /* for unbuffered reads */const struct st_mysql_methods *methods;MYSQL_ROW row; /* If unbuffered read */MYSQL_ROW current_row; /* buffer to current row */MEM_ROOT field_alloc;unsigned int field_count, current_field;my_bool eof; /* Used by mysql_fetch_row *//* mysql_stmt_close() had to cancel this result */my_bool unbuffered_fetch_cancelled;void *extension; } 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_fetch_fields 函数将会返回多个 MYSQL_FIELD 对象每个 MYSQL_FIELD 对象中保存着对应列的各种列属性其类型定义如下 typedef struct st_mysql_field {char *name; /* Name of column */char *org_name; /* Original column name, if an alias */char *table; /* Table of column if column was a field */char *org_table; /* Org table name, if table was an alias */char *db; /* Database for table */char *catalog; /* Catalog for table */char *def; /* Default value (set by mysql_list_fields) */unsigned long length; /* Width of column (create length) */unsigned long max_length; /* Max width for selected set */unsigned int name_length;unsigned int org_name_length;unsigned int table_length;unsigned int org_table_length;unsigned int db_length;unsigned int catalog_length;unsigned int def_length;unsigned int flags; /* Div flags */unsigned int decimals; /* Number of decimals in field */unsigned int charsetnr; /* Character set */enum enum_field_types type; /* Type of field. See mysql_com.h for types */void *extension; } MYSQL_FIELD;获取查询结果中的一行数据 MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);MYSQL_ROW 对象中保存着一行数据这一行数据中可能包含多个字符串对应就是这行数据中的多个列信息因此 MYSQL_ROW 本质就是 char** 类型其类型定义如下 typedef char **MYSQL_ROW; /* return data as array of strings */示例 int main() {// ...// 3、查询数据库表中的记录// a、执行查询语句string sql select * from account;if (mysql_query(mySQL, sql.c_str()) ! 0){cout 查询数据失败 endl;exit(2);}cout 查询数据成功 endl;// b、获取查询结果MYSQL_RES *res mysql_store_result(mySQL);int rows mysql_num_rows(res); // 数据的行数int cols mysql_num_fields(res); // 数据的列数// 获取每列的属性并打印列名MYSQL_FIELD *fields mysql_fetch_fields(res);for (int i 0; i cols; i){cout fields[i].name \t;}cout endl;for (int i 0; i rows; i){// 获取一行数据并进行打印MYSQL_ROW row mysql_fetch_row(res);for (int j 0; j cols; j){cout row[j] \t;}cout endl;}// 释放内存空间free(res); // ...return 0; }参考资料 Linux centos 7/ubantu 下 用 C 语言连接 MySQL 数据库MySQL 使用 C 语言连接
http://www.zqtcl.cn/news/240501/

相关文章:

  • 通用wap网站生成系统wordpress 安装旧版本
  • 做网站用的产品展示横幅手机app开发技术
  • 学校网站模板 中文版沈阳seo博客
  • seo策划方案整站优化服务
  • 灵芝产品网站建设方案wordpress登录开发
  • 企业网站软件开发部署php网站
  • 云服务器怎么搭建网站网站制作软件是什么
  • 网站建设的结尾官网网站设计
  • 网站开发网页超链接路径如何用dw修改wordpress的首页
  • 龙岗开发公司网站建设简述网站的制作流程
  • 杭州手机建站模板尤溪建设局网站
  • 北京手机网站设计报价网站建设计划表
  • php做的网站如何该样式如何卸载安装wordpress
  • 建设网站公司哪家性价比高最新推广注册app拿佣金
  • 丽水网站建设公司排名wordpress 去掉图片链接
  • 以下属于网站页面设计的原则有2345网址下载
  • 为网站的特色功能设计各种模板温州网页模板建站
  • 广州微网站建设企业网站建设网站优化推广
  • 大连模板网建站项目网络的关键路径
  • 迅雷黄冈网站推广软件徐州模板自助建站
  • 怎么做不占CPU的网站修改wordpress的登陆地址
  • 网站制作毕业设计论文软件ui设计培训机构
  • 物业网站模板哪里建设网站
  • 达州城乡建设网站手机网站 方案
  • 平台兼职网站开发许昌做网站优化
  • 婴幼儿用品网站开发意义基因网站开发
  • 自己网站页面设计软件传奇世界游戏官网
  • 淘宝网网站开发部技术部三亚私人高清影院品牌加盟
  • 网站是用什么软件做的山西网络科技有限公司
  • 汕头网站建设开发做购物网站 营业范围是什么