您的位置:首页 > 编程语言 > C语言/C++

vs2015利用connector c++对数据库操作

2016-05-19 01:45 507 查看

vs2015平台 利用connector c++连接mysql数据库

这几天在折腾c++连接mysql数据库,由于c++本身没有提供连接数据库的接口,只能利用c的一套来连接数据库,可是c连接数据库代码太繁琐而且不整洁,于是采用了mysql提供的针对c++连接数据库的api,即connector c++,现在我整理出来操作步骤供大家学习:

下载:

1. 下载mysql(这个不多说,而且后面要利用里面lib文件夹下的libmysql.dll)

2. 下载Mysql connector c++ 1.0.5,附上地址:http://dev.mysql.com/downloads/connector/cpp/

配置:

1. 项目->属性->配置属性->C/C++->常规,在“附加包含目录”中将
MySQL Connector C++ 1.0.5\include\
的路径包含进来。

2. 项目->属性->配置属性->链接器->常规,在“附加库目录”中将
MySQL\MySQL Connector C++ 1.0.5\lib\opt
包含进来。

3. 项目->属性->配置属性->链接器->输入,在“附加依赖项”中添加
mysqlcppconn.lib,mysqlcppconn-static.lib
这两项(这两项就是”lib”文件夹下的两个lib文件)。

4. 将
MySQL Connector C++ 1.0.5\lib\opt
下的
mysqlcppconn.dll
文件复制到项目所在路径下的debug文件夹 (我的是:
项目路径\x64\Debug
)。

测试代码:

#include <iostream>
#include <mysql_connection.h>
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>
#include <mysql_driver.h>
using namespace sql;
using namespace std;

class BookInfor {
public:
string name;
string writer;
string img;
string price;
};

class Mysql {
public:
mysql::MySQL_Driver *driver;
Connection *con;
Statement *state;
ResultSet *result;
PreparedStatement *prep_stmt;

Mysql()//构造函数
{
driver = sql::mysql::get_mysql_driver_instance();
// 建立链接
con = driver->connect("tcp://127.0.0.1:3307", "root", "root");
state = con->createStatement();
state->execute("use book_infor");
}

void query()//查询
{
// 查询
result = state->executeQuery("select * from book");
// 输出查询
while (result->next())
{
int id = result->getInt("id");
//string img = result->getString("bookname");
cout << id << endl;
}

}

int insert(BookInfor book)//插入
{
bool retstatus = state->execute("INSERT INTO book (bookname,imgpath) VALUES ('Napier', 'New Zealand')");
if (!retstatus)
{
return state->getUpdateCount();
}
else
{
return 0;
}
}

int prepare_insert(BookInfor book)
{
prep_stmt = con->prepareStatement("INSERT INTO book (name,img,price,writer) VALUES (?,?,?,?)");
prep_stmt->setString(1, book.name);
prep_stmt->setString(2, book.img);
prep_stmt->setString(3, book.price);
prep_stmt->setString(4, book.writer);
bool updatecount = prep_stmt->executeUpdate();
if (!updatecount)
{
return state->getUpdateCount();
}
else
{
return 0;
}
}

~Mysql()//析构函数
{
delete state;
delete con;
}

};

/*
int main()
{
BookInfor book;
book.img = "dd";
book.writer = "dd";
book.name = "dd";
book.price = "dd";
Mysql m;
m.prepare_insert(book);
}
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql vs2015