C++ 连接MYSQL及执行SQL语句

  • 前言
  • 一、下载MYSQL
  • 二、安装VS2015
  • 三、MYSQL操作
  • 1.配置环境
  • 2.连接MYSQL
  • 3.MYSQL操作
  • 总结



前言

编译环境为VS2015 + MYSQL5.7(或者以上)


一、下载MYSQL

这里注意安装的是MYSQL-Community-Server-Version,去MYSQL官网下载即可,现在最新的应该是8.0.23,我之前用的都是5.7的,不过不影响,链接如下:https://dev.mysql.com/downloads/windows/installer/8.0.html.

二、安装VS2015

      安装教程有很多,这里不再赘述,可参考这篇博客
      如果没有其它开发需求的话,在选择安装选项时 只需安装win sdk 以及C/C++即可。

三、MYSQL操作

1.配置环境

下载并安装MYSQL后,网上通用的C++连接MYSQL共有两种方式,这里采用的是官方的API函数,即“mysql.h”
      将MYSQL安装目录下的include和lib目录分别添加进vs2015的包含和依赖目录中,然后将lib下的libmysql.dll和libmysql.lib拷贝到项目目录…/x64/Debug/下,最后在代码中加入以下代码

#pragma comment(lib, “libmysql.lib”)

      进行动态链接,这里注意下,架构必须为x64,不然无法使用libmysql.dll。目录配置及最终代码配置如下:

c mysql操作 c++ mysql_sql语句

代码如下:

#include <mysql.h>

using namespace std;

#pragma comment(lib,"libmySQL.lib")

2.连接MYSQL

代码如下:

//尝试建立mysql连接
	try
	{
		mysql_init(mysql);
		// localhost:服务器 root为账号 123456为密码 test为数据库名 3306为端口  
		if (!mysql_real_connect(mysql, "localhost", "root", "123456", "test", 3306, NULL, 0))
		{
			cout << "connect mysql failed" << endl;
			return 0;
		}
	}
	catch (...)
	{
		return 0;
	}
	cout << "连接数据库成功" << endl;

      "root"为安装MYSQL时设置的用户名,“123456”为安装MYSQL时设置的密码,“test”为所要连接的数据库名,这三处可自行更改。

3.MYSQL操作

      查询代码如下:

MYSQL_RES *res;				//这个结构代表返回行的一个查询结果集  
string sqlStr;				//运行的sql语句
string sqlStr = "select * from ScenarioNMEA where ScenarioName = '" + scenarioName + "'";
if (mysql_query(mysql, sqlStr.data()))
{
	cout << "select failed" << endl;
	return 0;
}
else
{
	res = mysql_store_result(mysql);	//query只是执行了sql语句,需要手动保存结果集,而后才能输出查询到的结果,如行数等,与JAVA的JDBC不同
	if (mysql_affected_rows(mysql) == 1)	//判断行数
	{
		
	}
	else {

	}
}

      插入代码如下:

MYSQL_RES *res;				//这个结构代表返回行的一个查询结果集  
string sqlStr;				//运行的sql语句
sqlStr = "insert into ScenarioNMEA(ScenarioName, RecordFlag) values('" + scenarioName + "',1)";
if (mysql_query(mysql, sqlStr.data()))
{
	cout << "sql handle failed" << endl;
}
else
{
	res = mysql_store_result(mysql);
	if (mysql_affected_rows(mysql) == 1)
	{
		cout << "insert success" << endl;
	}
}

      需要注意的是,"mysql_query"仅是执行了sql语句,而结果并没有直接返回,与JDBC不同,需要通过“mysql_store_result”手动保存结果集,或者通过“mysql_affected_rows”查询受影响行数。       这里仅展示了查询以及插入的代码,删除以及修改同理,修改sql语句即可。

总结


      以上就是全部的内容,本文仅仅简单介绍了C++连接MYSQL的相关应用。