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中的integer 数据类型
- MySQL存储过程
- mysql中int、bigint、smallint 和 tinyint的区别与长度
- mysql load data 导出、导入 csv
- source命令执行SQL脚本文件
- MySQL创建用户及权限控制
- MySQL管理数据表
- linux下mysql添加用户
- mysql procedure
- mysql触发器
- MySQL 备份和恢复策略
- mac下安装mysql(转载)
- mysql 修改编码 Linux/Mac/Unix/通用(杜绝修改后无法启动的情况!)
- MySQL数据的导出、导入(mysql内部命令:mysqldump、mysql)
- mysql数据行转列
- Linux下修改MySQL编码的方法
- MySQL Server 日志
- MySQL 安全事宜
- MySQL 备份与恢复