MySQL Connector/C++ 操作MySQL数据库(配置成功,本人在用)

一、官网下载https://dev.mysql.com/downloads/connector/cpp/源码生成需要cmake编译,本人直接下载了生成好的lib、dll、.h文件直接使用:

MySQL Connector/C++ 操作MySQL数据库(配置成功,本人在用)_第1张图片

解压后:

MySQL Connector/C++ 操作MySQL数据库(配置成功,本人在用)_第2张图片

二、配置(vs2017)

1、项目/属性/(C/C++)/常规/附加包含目录 中添加.h文件所在的include文件夹。

MySQL Connector/C++ 操作MySQL数据库(配置成功,本人在用)_第3张图片

2、项目/属性/链接器/常规/附加库目录 加入.lib所在的文件夹。debug和release加入各自对应的文件夹。

MySQL Connector/C++ 操作MySQL数据库(配置成功,本人在用)_第4张图片

3、项目/属性/链接器/输入/附加依赖项 加入.lib文件。

MySQL Connector/C++ 操作MySQL数据库(配置成功,本人在用)_第5张图片

4、将mysqlcppconn-7-vs14.dll拷贝至程序根目录下,还需要将libeay32.dll和ssleay32.dll也拷贝至程序根目录下,否则会报错。

5、程序用到了boost库智能指针,下载boost库,解压后为boost_1_64_0,程序中附加包含目录引入即可,否则会报错。

MySQL Connector/C++ 操作MySQL数据库(配置成功,本人在用)_第6张图片

6、程序引入头文件

#include "jdbc/mysql_connection.h"
#include "jdbc/mysql_driver.h"
#include "jdbc/cppconn/statement.h"

7、连接数据库

	//初始化驱动
	sql::mysql::MySQL_Driver *driver = NULL;
	sql::Connection *con = NULL;
	driver = sql::mysql::get_mysql_driver_instance();
	if (driver == NULL)
	{
		cout << "driver is null" << endl;
	}
	con = driver->connect("tcp://localhost:3306", "root", "root");
	if (con == NULL)
	{
		cout << "conn is null" << endl;
	}
	cout << "connect suceess" << endl;

8、程序使用mysql版本为mysql-5.6.24-win32,完整的代码如下:

#include "iostream"
#include "jdbc/mysql_connection.h"
#include "jdbc/mysql_driver.h"
#include "jdbc/cppconn/statement.h"
#include "jdbc/cppconn/prepared_statement.h"

using namespace std;
using namespace sql;
int main()
{
	//初始化驱动
	sql::mysql::MySQL_Driver *driver = NULL;
	sql::Connection *conn = NULL;
	driver = sql::mysql::get_mysql_driver_instance();
	if (driver == NULL)
	{
		cout << "driver is null" << endl;
	}
	//连接
	//con = driver->connect("tcp://localhost:3306", "root", "root");
	conn = driver->connect("tcp://localhost:3306/ourcms", "root", "root");
	if (conn == NULL)
	{
		cout << "conn is null" << endl;
	}
	cout << "connect suceess" << endl;
	//查询
	int flag = 0;
	sql::Statement *stmt = conn->createStatement();
	sql::ResultSet *res;
	res = stmt->executeQuery("SELECT * FROM cms_device");
	while (res->next())
	{
		cout << res->getInt("id") << endl;
		cout << res->getString("phone").c_str() << endl;
		cout << res->getString("imsi").c_str() << endl;
	}
	//插入
	conn->setAutoCommit(0);//关闭自动提交
	PreparedStatement *prep_stmt;
	int updatecount = 0;
	res->first();
	flag = 0;
	while (res->next())
	{
		if (strcmp(res->getString("imsi").c_str(), "460010010000100") == 0)
		{
			flag = 1;
			break;
		}
	}
	if (flag == 0) {
		prep_stmt = conn->prepareStatement("INSERT INTO cms_device (id,phone,imsi) VALUES (111,?,?)");
		prep_stmt->setString(1, "15043214321");
		prep_stmt->setString(2, "460010010000100");
		updatecount = prep_stmt->executeUpdate();
	}
	Savepoint *savept;
	savept = conn->setSavepoint("SAVEPT1");
	res->first();
	flag = 0;
	while (res->next())
	{
		if (strcmp(res->getString("imsi").c_str(), "460010010000101") == 0)
		{
			flag = 1;
			break;
		}
	}
	if (flag == 0) {
		prep_stmt = conn->prepareStatement("INSERT INTO cms_device (phone,imsi) VALUES (?,?)");
		prep_stmt->setString(1, "15043214321");
		prep_stmt->setString(2, "460010010000101");
		updatecount = prep_stmt->executeUpdate();
	}
	conn->rollback(savept);
	conn->releaseSavepoint(savept);
	conn->commit();
	//更新
	conn->setAutoCommit(1);//打开自动提交
	prep_stmt = conn->prepareStatement("update cms_device set phone=? where phone=?");
	prep_stmt->setString(1, "15011111111");
	prep_stmt->setString(2, "15043214321");
	updatecount = prep_stmt->executeUpdate();
}

 

你可能感兴趣的:(C++,数据库,mysql)