Connector/c++库的编译:
1、把MySql数据库安装完成后,把bin目录加入环境变量。
2、下载boost库,官网就有下载: http://www.boost.org/
3、安装cmake工具,加入环境变量。
命令行: cmake -G , 列出cmake支持生成工程文件的各个版本。
4、下载 Connector/c++ 源文件 :http://dev.mysql.com/downloads/connector/cpp/
Select Platform: 下拉选项选择 Source Code 。这里貌似要FQ才行。
也可以到这里下载:http://download.csdn.net/detail/biantaiwangzi/9092595
一、生成工程文件
解压Connector/c++ ,命令行 cd 到解压目录 。我编译的是2010版,命令如下:
cmake -G "Visual Studio 10 2010" -DBOOST_ROOT:STRING="E:\GitHub"
-BOOST_ROOT:STRING 指定 boost库所在目录 执行完后,就得到sln工程文件。我这里得到的是:MYSQLCPPCONN.sln 二、编译 打开工程文件,编译 MYSQLCPPCONN 方案。 在 mysql-connector-c++-1.1.6\driver\Debug 目录下就可以得到 dll 和 lib文件。 2.1、使用 mysqlcppconn.dll 你需要 libmysql.dll 库文件。 这个文件你可以在 mysql的安装目录 C:\Program Files\MySQL\MySQL Server 5.6\lib 下找到。 2.2、工程中的其他方案,都是 Connector/C++ 的使用例子。作为参考非常有用,建议大家看一下。 三、库的使用 库使用需要几个文件: 1、include 文件夹 c/c++ /常规/附加包含目录 Connector/c++ 的安装版里面的Include 文件夹。或者把 /driver以及/driver/nativeapi 里面的头文件拷贝到一个文件夹里面(注意nativeapi要改名为 cppconn)。 2、Connector/c++ 库文件 和 MySql库文件: 2.1、mysqlcppconn.dll /debug,exe生成目录 2.2、mysqlcppconn.lib 链接器/输入/附加依赖项 2.3、libmysql.dll /debug 3、boost库所在目录 c/c++/常规/附加包含目录
四、使用例子 先建数据库:
create database test;
建表:
use test;
create table test(id int ,name varchar(32));
插入数据:
insert into test.test value(1001,"sanyue");
insert into test.test value(1002,"sixbeauty");
insert into test.test value(1003,"chouwa");
创建存储过程:
use test;
delimiter $
create procedure testproc1 (nId int) --注意这里和select那句的 ";"
begin
select id,name from test where id = nId;
end
$
delimiter ;
例子:
#include "mysql_connection.h"
#include "mysql_driver.h"
#include "cppconn/prepared_statement.h"
#include "stdlib.h"
using namespace std;
typedef boost::scoped_ptr<sql::mysql::MySQL_Driver> MySQL_Driver;
typedef boost::scoped_ptr<sql::Connection> Connection;
typedef boost::scoped_ptr<sql::PreparedStatement> PreparedStatement;
typedef boost::scoped_ptr<sql::Statement> Statement;
typedef boost::scoped_ptr<sql::ResultSet> ResultSet;
#define CRTDBG_MAP_ALLOC
int main()
{
sql::mysql::MySQL_Driver *driver;
Connection con(NULL);
PreparedStatement prepareState(NULL);
ResultSet result(NULL);
//初始化驱动
try
{
driver=(sql::mysql::get_mysql_driver_instance());
//建立连接
con.reset(driver->connect("tcp://127.0.0.1:3306","root","123456"));
if(con->isValid() == false)
{
cout<<"连接失败"<<endl;
return -1;
}
// 查询存储过程
prepareState.reset(con->prepareStatement("call test.testproc1(?)"));
prepareState->setInt(1,1001);
prepareState->executeUpdate();
result.reset(prepareState->getResultSet());
// 输出结果
while(result->next())
{
int id = result->getInt("id");
string name = result->getString("name");
cout<<"testuser: "<< id <<" , "<<name<<endl;
}
result->close();
prepareState->close();
con->close();
/*
result.reset(NULL);
prepareState.reset(NULL);
con.reset(NULL);
*/
_CrtDumpMemoryLeaks();
//_CrtDumpMemoryLeaks();
}
catch (sql::SQLException &e)
{
cout<<e.what()<<",state:"<<e.getSQLState()<<endl;
cout<<"errorCode: " << e.getErrorCode()<<endl;
}
return 0;
}
文章浏览阅读1.7k次。如果你看到用户向一个对象索求(request)另一个对象,然后再向后者索求另一个对象,然后再索求另一个对象……这就是Message Chains。实际代码中你看到的可 能是一长串getThis()或一长串临时变量。采取这种方式,意味客户将与查找过程中的航行结构(structure of the navigation)紧密耦合。一旦对象间的关系发生任何变化,客户端就不得不做出相应修改。这时候_面向对象的代码异味messagechain
文章浏览阅读1.7k次。自用PTA题目记录0004 以下题目序号并无实际意义文章目录自用PTA题目记录00047-2 谷歌的招聘代码总结7-2 谷歌的招聘题目作者: AMi 单位: 临沂大学 代码长度限制: 16 KB 时间限制: 200 ms 内存限制: 64 MB作为一个职业HR,要给某个项目组的所有职员群发邮件,已经知道HR有所有人的姓名、电话以及邮箱,请编写程序,取出所有人的邮箱,合并为一个邮箱列表,邮箱之间以“;”隔开,使其可以群发邮件。输入格式: 在一行中给出所有人的姓名、电话以及邮箱,例如:_作为一个职业hr,要给某个项目组的所有职员群发邮件,已经知道hr有所有人的姓名、电
文章浏览阅读318次。我们想使用PHP+memcache的开发组合选择一个专门的memcache机器,要么单独准备,要么将它和php放在一起(简略版)。1.安装# 安装依赖# yum -y install libevent-devel# 下载与安装# cd /software# wget http://memcached.org/files/memcached-1.5.20.tar.gz# t..._php安装mem
文章浏览阅读9.5k次,点赞12次,收藏38次。<!doctype html><html><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="initial-scale=1.0..._js读取csv文件内容
文章浏览阅读2.3w次,点赞9次,收藏34次。目录第一章 videojs的配置与简介第二章 更改视频源代码与实例第三章 api的部分应用实例第四章 视频api补充介绍添加事件事件绑定前言:老师让我修改一个需要播放器的界面,之前的播放器有挺多功能需要修改,于是就从网上找了新的播放器插件,也就是Video.js,在网上找了挺久没什么靠谱的资料,于是记录一下。第一章 videojs的配置与简介关于videojs我..._video.js 6.2.8
文章浏览阅读1.1k次,点赞25次,收藏23次。DataX 全量数据同步工具_datax工具
文章浏览阅读2.6k次,点赞2次,收藏2次。打开数据库package mainimport ("os""github.com/boltdb/bolt""github.com/go-kit/kit/log")func main() {logger := log.NewLogfmtLogger(os.Stdout)db, err := bolt.Open("mydb.db", 0600, nil)if err != nil ..._bolt 使用
文章浏览阅读4.3k次,点赞15次,收藏44次。Qt在透明控件上自由绘画文章目录Qt在透明控件上自由绘画如何让QWidget变透明透明QWidget上响应鼠标事件初学Qt,需要实现这样的效果:在透明的QWidget上自由的绘图,看起来就像是直接在桌面绘图一样。要达到这样的效果,需要分成两个步骤:如何将QWidget变得透明。如何在透明的QWidget控件上使用QPainter绘制图形。当然,第二点是Widget透明之后才发..._qwidget 画图
文章浏览阅读1.7w次。右边为调用clear后内存情况 现将list.clear改为 list=null,再看看运行情况 赋值NULL后不仅列表中的对象变成了垃圾,为列表分配的空间也会回收 clear()只是清除了对象的引用,使那些对象成为垃圾_java如何回收list
文章浏览阅读985次,点赞26次,收藏6次。本系统实现了管理员,教师,学生三个模块的功能,对于学生和教师部分,分别实现了学生请假信息管理,销假信息管理和个人用户等功能,管理员给教师和学生分配了各个用户权限,保证了系统在网络上运行的安全性,保证了学生请假的隐私;学生功能实现了通过网络移动设备如手机和电脑来随时随地提交请假,提升了请假的它方便性和简洁性,无需打扰教师。教师功能实现了对学生请假和销假申请的审批,并能查看相关学生的审核的状态。本系统由于时间,人力和资源的限制,尽管也取得了不错的评价。
文章浏览阅读926次,点赞30次,收藏15次。的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**
文章浏览阅读2.4k次。用户任务是camunda最常用的任务之一_user task