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。目录配置及最终代码配置如下:
代码如下:
#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的相关应用。