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

重庆云阳网站建设网站开发和报价方案

重庆云阳网站建设,网站开发和报价方案,网站服务器有哪些,融资MySQL Connection ​ 连接数据库的客户端除了命令行式的还有图形化界面版本,网页版本,当然也包括语言级别的库或者是包,能够帮助我们直接连接数据库; 一、语言连接库下载 方式一:不建议使用,需要自己配置…

MySQL Connection

​ 连接数据库的客户端除了命令行式的还有图形化界面版本,网页版本,当然也包括语言级别的库或者是包,能够帮助我们直接连接数据库;

一、语言连接库下载

方式一:不建议使用,需要自己配置环境变量,或者将库文件和头文件添加到系统路径之下;

​ 使用语言连接数据库需要注意安装相关的开发库;

​ 网址:https://www.mysql.com/,然后去downloads选中MySQL Community Downloads;

​ 下载连接库Connector/C++ 8.0,找到对应的版本;

在这里插入图片描述

方式二:进行安装yum源,然后在进行下载并安装连接库;

sudo yum install -y mysql-devel

二、使用C/C++访问数据库

2.1MySQL库中的常用数据结构

MYSQL:这个结构主要用于数据库的连接;
MYSQL_RES:这个结构主要用于保存读取结果,以行为单位,用于MYSQL的查询结果转储;
MYSQL_ROW:这个结构主要用于获取转储中的一行数据记录,是一个二维数组;
MYSQL_FIELD:这个结构主要用于获取转储中的相关列属性,是一个结构化的数据类型;

2.2MySQL常用接口

1.使用MySQL必须先进行初始化,初始化一些数据结构;

MYSQL *mysql_init(MYSQL *mysql);
//MYSQL*就相当于C语言中的FILE*和系统的fd文件描述符,用来描述MySQL客户端相关的资源;也可以称之为句柄

2.使用MySQL前需要进行连接MySQL;

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 client_flag);

3.修改MySQL字符集

​ 需要注意连接之后的编码集默认是latin1;

int mysql_set_character_set(MYSQL *mysql,const char *csname);

4.向MySQL中发送SQL语句;

​ 对于增删改,只需要执行sql即可,但是select需要进行后续操作,将数据提交到上层;

​ 还需要注意字符集,防止乱码;

int mysql_query(MYSQL *mysql,const char *stmt_str)//0表示成功,非零表示失败;

5.当不使用了,需要关闭MYSQL*句柄;

void mysql_close(MYSQL*mysql);

2.3C/C++查询的处理细节

​ 当查询完成之后,会将查询结果存放到句柄当中;此时就需要将查询结果提取出来,从句柄当中格式化提取到MYSQL_RES中,进行转储,便于进行二次处理;

MYSQL_RES *mysql_store_result(MYSQL *mysql);
//需要注意的是,该函数会malloc一段空间,所以一定要记得进行free,否则就会造成内存泄露;
void mysql_free_result(MYSQL_RES *result);//使用此函数进行释放内存空间;

​ MySQL中存储的表结构,实际上是存储了两种内容,一种是列属性名,一种是数据内容;当提取表中的记录时,就不会考虑约束了,而是i直接提取出来字符串;

​ 可以将MYSQL_RES结构看作一个char** array[]的结构,其中的一个数组会被当作一行记录,每一条记录由不同的列构成,不同的列是一个字符串;这样既可以按照行读取,也可以按照列进行读取;

​ 为了便于遍历,需要获取行数和列数,就需要用到以下接口实现;

unsigned int mysql_num_fields(MYSQL_RES *result);//返回列数
my_ulonglong mysql_num_rows(MYSQL_RES *result);//返回行数,此时的行数表示的是数据内容,不包括列名称;

​ 直接获取一行的结果;再重复使用下列函数的过程当中,会自动遍历到下一行;

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);//返回值本质上就是一个char**也就是一个二维数组;

​ 获取列名使用如下接口;

MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result)//一次性获取所有的列;
MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)//一个一个的获取,并每次使用会自动下后一个迭代;

示例

#include <iostream>
#include <mysql/mysql.h>
#include <unistd.h>
#include <string>
using std::cerr;
using std::cin;
using std::cout;
using std::endl;
using std::string;const string host = "localhost";
const string user = "user_for_C";
const string password = "dyh15343510133.";
const string database = "for_comm_user_C";
const unsigned int port = 8080;int main()
{// MYSQL对象初始化MYSQL *my = mysql_init(nullptr);if (my == nullptr){cerr << "init mysql error" << endl;return 1;}// 连接MYSQLif (mysql_real_connect(my, host.c_str(), user.c_str(), password.c_str(), database.c_str(), port, nullptr, 0) == nullptr){cerr << "connect mysql error" << endl;return 2;}cout << "connect mysql success" << endl;if (mysql_set_character_set(my, "utf8")){cerr << "设置字符集失败" << endl;return 3;}// 发送SQL语句string sql = "select * from user";if (mysql_query(my, sql.c_str())){cerr << "query error" << endl;}else{cout << "query success" << endl;}// 获取查询结果MYSQL_RES *myres = mysql_store_result(my);if (nullptr == myres){cerr << "mysql_store_result error" << endl;return 4;}int rows = mysql_num_rows(myres);int columns = mysql_num_fields(myres);cout << "行数:" << rows << ",列数:" << columns << endl;// 表的属性MYSQL_FIELD *fields = mysql_fetch_fields(myres);for (int i = 0; i < columns; i++){cout << fields[i].name << "\t\t";}cout << endl;// 表的内容for (int i = 0; i < rows; i++){MYSQL_ROW row = mysql_fetch_row(myres);for (int j = 0; j < columns; j++){cout << row[j] << "\t\t";}cout << endl;}// string sql;// while (true)// {//     cout << "mysql>>>";//     if (!std::getline(cin, sql) || sql == "quit")//     {//         cout << "Bye" << endl;//         break;//     }//     int n = mysql_query(my, sql.c_str());//     if (n == 0)//     {//         cout << sql << " success: " << n << endl;//     }//     else//     {//         cerr << sql << " error: " << n << endl;//     }// }// 释放结果集mysql_free_result(myres);//  MYSQL对象关闭mysql_close(my);return 0;
}

三、图形化界面连接数据库

​ 如Navicat就是使用体验较好的一个图形化界面,但是是一个收费的方案;还有一款是MySQL Workbench,是官方提供的一种图形化界面方案,是一种免费的方案;

http://www.yayakq.cn/news/614180/

相关文章:

  • node.js网站开发框架邯郸做紧固件网站
  • joomla! 1.5 网站建设基础教程线报网站如何做
  • 商丘网站建设专业现状新媒体运营培训
  • 网站设计集团河北盛通公路建设有限公司网站
  • 时尚手表网站做外贸哪些网站可以找客户
  • 淄博网站高校招生网站模板
  • 网站搭建报价抚顺市建设银行网站
  • 石家庄建站平台家电维修企业网站源码
  • 做商城网站多少钱企业官网模板免费
  • 网站规范建设在线生成app网站源码
  • 在线做数据图的网站有哪些wordpress 博客标题
  • 网站建设 大学生创业网wordpress图片视频分享
  • 做平面设计在那个网站上找图好海外网站营销
  • .网站空间随身办app下载
  • 深圳网站开发哪家服务专业通信工程网站建设
  • 买域名送网站seo教程搜索引擎优化入门与进阶
  • wordpress速度没织梦快谷歌seo关键词优化
  • 爱企查企业信息查询盐城seo营销
  • 网站优化自已做还是请人做喀什住房和城乡建设局网站
  • 建站的公司济宁住房和城乡建设厅网站
  • 什么叫手机网站手机中国建设银行网站
  • 网站建设前期开发网站创建怎么做
  • 长春网站建设推广做网站西安哪家好
  • 杭州网站的优化建筑公司企业愿景怎么写
  • 请人做网站得多少钱做个网站需要多少钱.
  • 网站做任务 炸金花中国邮政做特产的网站
  • 网站设计兼职企业网站建设排名网址
  • 网站程序上传工具广告设计是什么专业类别
  • 撤销网站备案广东 网站建设 公司排名
  • 中集建设集团有限公司网站苏州实力做网站公司有哪些