MySql C++调用库Connector/c++编译 和 接口封装【二】Connector/c++编译

一、生成工程文件
cmake -G "Visual Studio 10 2010" -DBOOST_ROOT:STRING="E:\GitHub"
-DBOOST_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());
插入数据:
insert into test.test value(,"sanyue");
insert into test.test value(,"sixbeauty");
insert into test.test value(,"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","")); if(con->isValid() == false)
{
cout<<"连接失败"<<endl;
return -;
} // 查询存储过程
prepareState.reset(con->prepareStatement("call test.testproc1(?)"));
prepareState->setInt(,);
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 ;
}
MySql C++调用库Connector/c++编译 和 接口封装【二】Connector/c++编译的更多相关文章
- MySql C++调用库Connector/c++编译 和 接口封装【三】Connector/c++ 使用总结及封装
工程需要加上各个路径: 库使用需要几个文件: 1.include 文件夹 c/c++ /常规/附加包含目录 Connector/c++ 的安装版里面的Include 文件夹.或者把 /driver以及 ...
- MySql C++调用库Connector/c++编译 和 接口封装【一】mysql数据库安装
Connector/c++库的源文件编译,你需要先准备好以下工具: mysql数据库(编译时要依赖),boost库,cmake(生成sln工程文件),connector/c++的源文件,vis ...
- MySQL从删库到跑路_高级(二)——自定义函数
作者:天山老妖S 链接:http://blog.51cto.com/9291927 一.自定义函数简介 自定义函数(user-defined function UDF)是一种对MySQL扩展的途径,其 ...
- mysql数据库从库同步延迟的问题
在从服务器上执行show slave status;可以查看到很多同步的参数,我们需要特别注意的参数如下,希望文章对各位会有所帮助. 在从服务器上执行show slave status;可以查看到很多 ...
- MySQL 实现调用外部程序和系统命令
MySQL 实现调用外部程序和系统命令 Refer:http://www.cnblogs.com/yunsicai/p/4080864.html1) Download lib_mysqludf_sys ...
- 友盟推送 .NET (C#) 服务端 SDK rest api 调用库
友盟推送 .NET SDK rest api 介绍 该版本是基于友盟推送2.3版本封装的,网上查询了下发现没有.NET版本的调用库,官方也没有封装.NET的版本,只有python.java.php版本 ...
- 信鸽推送 .NET (C#) 服务端 SDK rest api 调用库(v1.2)
信鸽推送 .NET 服务端 SDK rest api 调用库-介绍 该版本是基于信鸽推送v2版本的时候封装的,先拿出来与大家分享,封装还还凑合,不依赖其他http调用件,唯一依赖json序列化dll ...
- J2EE之oracle、mysql存储过程调用
最近几天在研究hibernate.JPA对存储过程的调用,主要是针对有返回结果集的存储过程的调用方法,个人感觉存储过程是个好东西,虽然说heibernate对数据访问封装的比较不错,再加上他的缓存机制 ...
- ECMall的MySQL数据调用的简单方法
很多ecmall开发者会问,怎么使用Ecmall的mysql类库进行数据调用.从原理上来讲Ecmall的数据调用是以数据模块+模块类库的方式进行mysql数据调用的,所有数据模块都存储在include ...
随机推荐
- 配置tomcat全局c3p0连接池
由于项目中多个应用访问同一个数据库,并部署在同一个tomcat下面,所以没必要每个应用都配置连接池信息,这样可能导致数据库的资源分布不均,所以这种情况完全可以配置一个tomcat的全局连接池,所涉及应 ...
- vue学习01
vue学习01 1. 创建一个Vue实例官网-学习-教程-安装-(开发/生产版本)-与jQuery的引用相似 <!DOCTYPE html> <html> <head ...
- oc 异常处理
#import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { ...
- Linux中断 - softirq
一.前言 对于中断处理而言,linux将其分成了两个部分,一个叫做中断handler(top half),是全程关闭中断的,另外一部分是deferable task(bottom half),属于不那 ...
- __attribute__中constructor和destructor
1.前言 最近看到一份代码,看到一个函数前面用__attribute__((destructor))修饰,当时感觉有点怪怪的,搜了整个程序,也没发现哪个地方调用这个函数.于是从字面意思猜想,该函数会在 ...
- tomcat支持https的历程
tomcat真是业界良心啊,文档写的详细无比. 一.https是什么? 简单的说,就是http+SSL/TLS 协议还是http,但是在传输层过程中使用了加密(涉及握手.秘钥分发.加密.解密等过程). ...
- Github如何上传代码?
Github如何上传代码? 第一步:创建Github新账户 第二步:新建仓库 第三部:填写名称,简介(可选),勾选Initialize this repository with a README选项, ...
- spring中AOP
1 AOP 的功能是把横切的问题(如性能监视.事务管理)模块化.AOP的核心是连接点模型,他提供在哪里发生横切. Spring AOP 的底层是通过使用 JDK 或 CGLib 动态代理技术为目标 b ...
- jeecg多页签的选择切换
有时候我们的页面需要多页签,多页签又引起一个问题就是只会校验初始加载的页签,所以就有了一个需求,需要把所有的页签都加载一遍,之后所有页签中需要校验的内容都会校验了,切换页签代码如下: $(docume ...
- Spring Cloud Netflix概览和架构设计
Spring Cloud简介 Spring Cloud是基于Spring Boot的一整套实现微服务的框架.他提供了微服务开发所需的配置管理.服务发现.断路器.智能路由.微代理.控制总线.全局锁.决策 ...