C++连接使用MySQL的方法

 更新时间:2020年07月29日 09:53:12   作者:AntiFancy  
这篇文章主要为大家详细介绍了C++连接使用MySQL的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

C++连接使用MySQL,供大家参考,具体内容如下

定义MySQLCon类

class MySQLCon
{
 MYSQL mysql;
public:
 int errornum;
 string errortext;
public:
 //初始化
 MySQLCon();
 //关闭数据库
 ~MySQLCon();
 //链接数据库
 bool OpenConn(const char* host,const char* username,const char* pwd,const char* dbName,unsigned port=0);
 void GetErrorText();//获取错误文本
 void Close();//关闭数据库
 bool ExecuteSQL(const char* sql);//使用SQL语句,无法接收数据
 bool QureySQL(const char* sql, vector<vector<string>>& resultSet);//使用SQL语句并接收数据(select语句)
};

初始化操作

MySQLCon::MySQLCon()
{
 if (mysql_library_init(0, nullptr, nullptr)) 
 {
 cout << "CAPI初始化失败" << std::endl;
 getchar();
 exit(1);
 }
 if (mysql_init(&mysql)==nullptr)
 {
 cout << "初始化数据库变量失败" << std::endl;
 getchar();
 exit(1);
 }
 if (mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk"))
 {
 cout << "设置连接选项失败" << std::endl;
 getchar();
 exit(1);
 }
}

连接到MySQL服务器

//参数分别为主机,用户名,密码,数据库名,端口号
bool MySQLCon::OpenConn(const char* host, const char* username, const char* pwd, const char* dbName, unsigned port)
{
 //连接数据库
 if (mysql_real_connect(&mysql, host, username, pwd, dbName, port, nullptr, 0)==nullptr)
 {
 cout << "连接到MySQL服务器失败" << std::endl;
 //获取错误文本
 GetErrorText();
 exit(1);
 return false;
 }
 return true;
 
}

获取MySQL错误信息

void MySQLCon::GetErrorText()
{
 //获取错误代码
 errornum = mysql_errno(&mysql);
 //获取错误文本
 errortext = mysql_error(&mysql);
 //打印错误代码
 cout << "error num: " << errornum << std::endl;
 //打印错误文本
 cout << "error text: " << errortext << std::endl;
 getchar();
}

C++中使用SQL语句

bool MySQLCon::ExecuteSQL(const char* sql)
{
 //使用SQL语句但无法接收数据
 if (mysql_real_query(&mysql, sql, strlen(sql)))
 {
 GetErrorText();
 return false;
 }
 return true;
}
bool MySQLCon::QureySQL(const char* sql, vector<vector<string>>& resultSet)
{
 //使用SQL语句并接收数据至vector容器
 if (mysql_real_query(&mysql, sql, strlen(sql)))
 {
 GetErrorText();
 return false;
 }
 //创建一个MYSQL结果集
 MYSQL_RES* result = mysql_store_result(&mysql);
 //获取行和列的总数
 unsigned int rows = mysql_num_rows(result);
 unsigned int cols = mysql_num_fields(result);
 //用于记录结果集中的一条数据
 MYSQL_ROW row;
 while (row = mysql_fetch_row(result))
 {
 //创建一个vector容器用于储存row中的数据
 vector<string> lineDate;
 for (int i = 0; i < cols; i++)
 {
 if (row[i])
 {
 //将row中每一列的数据存入lineDate中
 lineDate.push_back(row[i]);
 }
 else
 {
 lineDate.push_back("");
 }
 }
 //在resultSet中存入整行数据
 resultSet.push_back(lineDate);
 }
 //释放结果集
 mysql_free_result(result);
 return true;
}

关闭数据库

void MySQLCon::Close()
{
 mysql_close(&mysql);
}
MySQLCon::~MySQLCon()
{
 Close();
 mysql_library_end();
}

示例主函数

int main()
{
 MySQLCon c_apiconn;
 c_apiconn.OpenConn("127.0.0.1", "root", "136119", "fancy");
 string sql = "use fancy;";
 vector<vector<string>> data;
 c_apiconn.ExecuteSQL(sql.c_str());
 sql = "select * from fancy.info;";
 c_apiconn.QureySQL(sql.c_str(), data);
 for (int i = 0; i < data.size(); i++)
 {
 for (int j = 0; j < data[i].size(); j++)
 {
 cout << data[i][j] << "\t";
 }
 cout << endl;
 }
 return 0;
}

输出内容

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • MySQL的批量更新和批量新增优化方式

    MySQL的批量更新和批量新增优化方式

    这篇文章主要介绍了MySQL的批量更新和批量新增优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Mysql大表全表查询的全过程(分析底层的数据流转过程)

    Mysql大表全表查询的全过程(分析底层的数据流转过程)

    这篇文章主要介绍了Mysql大表全表查询的全过程(分析底层的数据流转过程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • MySQL日志分析软件mysqlsla的安装和使用教程

    MySQL日志分析软件mysqlsla的安装和使用教程

    这篇文章主要介绍了MySQL日志分析软件mysqlsla的安装和使用教程,文中以Linux系统作为环境进行示例,需要的朋友可以参考下
    2015-11-11
  • MySql中把一个表的数据插入到另一个表中的实现代码

    MySql中把一个表的数据插入到另一个表中的实现代码

    本篇文章是对MySql中把一个表的数据插入到另一个表中的实现代码进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • MySQL timestamp与时区问题的解决

    MySQL timestamp与时区问题的解决

    本文主要介绍了MySQL timestamp与时区问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • MySQL彻底卸载并且重新安装教程

    MySQL彻底卸载并且重新安装教程

    本文详细介绍了卸载和重新安装MySQL的步骤,包括停止MySQL服务、卸载软件、清理残余文件、删除注册表、删除环境变量配置等,重新安装时,需要下载MySQL、配置环境变量、新建配置文件、初始化MySQL服务、注册MySQL服务、启动MySQL服务、修改默认账户密码以及登录MySQL
    2025-01-01
  • PHP学习散记 2012_01_07(MySQL)

    PHP学习散记 2012_01_07(MySQL)

    数据库是Web大多数应用开发的基础。如果你是用PHP,那么大多数据库用的是MYSQL也是LAMP架构的重要部分
    2012-01-01
  • mysql left join的基本用法以及on与where的区别

    mysql left join的基本用法以及on与where的区别

    我们在写sql语句的时候,总是无法避免使用到连接关键词,比如内连接、外连接,下面就是详细的介绍,需要的朋友可以参考下
    2023-05-05
  • MySQL定期整理磁盘碎片的方法实现

    MySQL定期整理磁盘碎片的方法实现

    磁盘碎片是指文件在磁盘上分散存储的情况,这可能导致磁盘读写速度下降、空间浪费等问题,本文主要介绍了MySQL定期整理磁盘碎片的方法实现,感兴趣的可以了解一下
    2024-02-02
  • mysql分区功能详解,以及实例分析

    mysql分区功能详解,以及实例分析

    下面小编就为大家带来一篇mysql分区功能详解,以及实例分析。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03

最新评论