C++ VS2019使用MySQL的简单方式

  • 前言
  • 使用说明
  • MySQL使用
  • MySQL连接
  • MySQL断开
  • MySQL执行语句


前言

虽然工作一年多了,公司不是专业的科技公司,没有系统的编程环境,很多东西都靠自己摸索或者请教同事。Java、Python、C++、C#语言都在用,想把自己摸索的东西总结下来,作为自己的技术沉淀。

用过Java的JPA,再对比SQL后发现,好用的不止一星半点。项目接口使用的C++,实在没有精力重新封装接口用Java开发,只能硬着头皮写C++。C++实在没有什么好用的ORM,简单查了一下,大概也就ODB。看了一下官方文档,下了example并且跟着官方的写了一遍,感想就是——太恶心了!!!创建好domain,绑定数据库,还要通过命令生成一大堆东西,还要生成对应的sql…本渣项目很紧急,很难短时间内使用熟练,没办法,只好使用MySQL官方提供的方法了。

使用说明

并不需要在项目属性的C++和链接器配置中添加对应的库,按着如下代码写就可以非常方便的引用了

MySQL使用

MySQL连接

这里以MqSQL 8.0为例。安装好MySQL后,去安装路径(一般应该是Program File)寻找MySQL/MySQL Server 8.0/,将这个路径下的include文件夹拷贝到VS项目文件夹下,再将这个路径的libmysql.lib和libmysql.dll也拷贝到项目路径下

例如,将include放到sln同级路径下,将libmysql.lib和libmysql.dll放到sln同级路径下的lib当中,则需要如下代码,完成对MySQL Api的引用

#include "../include/mysql.h" 
#pragma comment(lib, "../lib/libmysql.lib")

构建一个MYSQL 实例

MYSQL mysql;

初始化MySQL

mysql_init(&mysql);

连接MySQL数据库

if (!mysql_real_connect(&mysql, "localhost", "root", "", "marketmaker", 3306, NULL, 0))
{
	std::cout << "数据库连接失败" <<std::endl;
}

MySQL断开

断开连接

mysql_close(&mysql);

MySQL执行语句

执行sql查询语句

string sql = "select * from cust_done limit 0, 100;";
mysql_query(&mysql, sql.c_str()); // 执行
MYSQL_RES* result = mysql_store_result(&mysql); //获取查询内容
std::cout << result->row_count << std::endl; // 打印查询行数

while (MYSQL_ROW row = mysql_fetch_row(result)) //获取整条数据内容
{
	for (int i = 0; i < num_fields; i++)
	{
		if (NULL == row[i])
		{
			cout << " NULL";
		}
		else
		{
			cout << " " << row[i];
		}
	}
	cout << endl;
}

同理,执行其他语句也是mysql_query()这个函数,只要是MySQL原生语句都可以执行,报错的话,复制到navicate中查询一下对应的错误信息,也可以查询一下返回值的意义,并不难用,但是也并不方便。