首先下载并安装mysql,我使用的为mysql 5.5版本,安装时注意安装c++的开发包。

#1  下载mysql++,解压,  找到install.hta, 修改对应路径,指向vc2008所在路径,  生成mysql++ 的lib 至某路径, 如 d:\mysql++3.10\ include

#2  打开mysql++ vc2008目录是mysql++_mysqlpp.sln, 升级到vs2010版本, 因为vs2010去掉了针对整个解决方案修改vc目录的功能(只能单个项目修改,所以原项目编译不过)

#3  视图》其它窗口》随意选择一个项目 ,打开 win32….user节点, 设置vc目录(include, lib 等),则将应用于整个解决方案, 其它项目将继承此设置.

A 需要将 mysql安装目录的lib 路径 设置到 vc目录的lib

B 需要将 mysql安装目录的inlucde路径设置到vc目录的 包含目录及引用目录

C 原解决方案已含了 vc2008上级目录的lib文件夹,因此不用再行设置。

D 复制libmysql.lib 到某目录下,此目录加入到vc目录的lib

#4 编译vc2008解决方案,  将编译成功的 mysqlpp_d.dll, mysqlpp_d.lib, mysql_excommon.lib 保留。

至此,我们已准备好了 mysql++所需要的头和库文件   d:\mysql++3.10\ include   及 第#4步生成的几个库文件。

接下来我们将其应用于新的项目中

#1 新建 vc2010项目,  因为只有单个项目,直接在项目属性页里设置vc路径

A 包含目录  ,设置为用install.hta生成的路径, 即上述的 d:\mysql++3.10\include.  当然还包括mysql安装目录下的MySQL Server 5.5\include

B 引用目录, 同上

C 库目录, 同上, 并且增加了 mysql安装目录下的 MySQL Server 5.5\lib 目录。 并且 我将第 #4 步编译成功的 几个库文件复制在了 d:\mysql++3.10\ include目录下

#2 在项目中增加现有项,加入mysqlpp_d.lib,  mysqlpp_excommon.lib, libmysql.lib

#3 将mysqlpp_d.dll 复制到 c:\windows\system32目录下

#4 设置项目的link的依赖项, 增加对此三lib文件的依赖 .     项目属性页>链接器>输入>额外依赖项>libmysql.lib;mysqlpp_d.lib;mysqlpp_excommon.lib;后面是项目默认的win32库如kernel32.lib之类。

#5 试写简单的测试代码,从 test库的ta表中输出记录.

// tstMYSQL.cpp : 定义控制台应用程序的入口点。

//

#include"stdafx.h"

#include

#include

#include

using namespacemysqlpp;

using namespace std;

int _tmain(int argc,_TCHAR* argv[])

{

mysqlpp::Connection con(false);

con.connect("test","localhost","root","密码",3306);

cout<

cout<

mysqlpp::Query query = con.query("select name from ta");

if (mysqlpp::StoreQueryResult res = query.store())

{

cout << "the it members as bellow :" << endl;

for (size_t i = 0; i < res.num_rows(); ++i)

{

cout << '\t' << res[i][0] << endl;

}

}

cout<

cin.get();

con.disconnect();

return 0;

}

至此已完成mysql++访问mysql的测试。

接下来,试用连接池.   mysql++提拱了connectionpool的接口, 我们需要对这个虚类的实现。

以下生成CConnectionPool的派生类来进行实现  (参考mysql++示例文档)

class CConnectionPool : public mysqlpp::ConnectionPool

{

public:

CConnectionPool(

const char* db,

const char* server,

const char* user,

const char* password) :

db_(db ? db : ""),

server_(server ? server : ""),

user_(user ? user : ""),

password_(password ? password : "")

{

}

~CConnectionPool()

{

clear();

}

mysqlpp::Connection* grab()

{

++conns_in_use_;

return mysqlpp::ConnectionPool::grab();

}

void release(const mysqlpp::Connection* pc)

{

mysqlpp::ConnectionPool::release(pc);

--conns_in_use_;

}

protected:

mysqlpp::Connection* create()

{

return new mysqlpp::Connection(

db_.empty() ? 0 : db_.c_str(),

server_.empty() ? 0 : server_.c_str(),

user_.empty() ? 0 : user_.c_str(),

password_.empty() ? "" : password_.c_str());

}

void destroy(mysqlpp::Connection* cp)

{

delete cp;

}

unsigned int max_idle_time()

{

return NULL;

}

private:

//Number of connections currently in use

unsigned int conns_in_use_;

//connection parameters

std::string db_, server_, user_, password_;

};

CConnectionPool* poolptr = 0;

调用示例:

//定义数据库连接信息

const char* db ="test", *server = "localhost", *user ="root", *pass = "xxxx";

//准备连接池

poolptr = new CConnectionPool(db, server, user, pass);

//从连接池返回一个可用连接

mysqlpp::ScopedConnection cp(*poolptr, true);

cout<

cout<

//利用此连接进行操作

mysqlpp::Query query = cp->query("select name from ta");

if(mysqlpp::StoreQueryResult res = query.store())

{

cout << "the it members as bellow :" << endl;

for (size_t i = 0; i < res.num_rows(); ++i)

{

cout <

}

}

cout<

cin.get();

cp->disconnect();

另外,mysql++里准备了threads.h 用于多线程处理, 可以自行调整 。

关于mysql++的更多操作,请参见mysql++手册。

vc2010访问局域网mysql_VC2010利用MySQL++访问mysql. 及连接池示例相关推荐

  1. 微服务 mysql 连接池_【mysql】druid,连接池和微服务的问题

    我所知道的 druid 配置,是在一个服务上进行配置 假如一台机器上装有 mysql 当我们用连接池去连接的时候 根据 https://blog.csdn.net/w059805- 说法 连接池的大小 ...

  2. jsp oracle连接池,利用Oracle自带的连接池类的一例

    利用Oracle自带的连接池类的一例 作者:未知    文章来源:www.jspcn.net 发布日期:2005年01月19日 /** 封装了对数据库的连接,用于处理SQL语句. @author:ya ...

  3. 广域网访问局域网路由器设置_交换机路由器如何连接 交换机路由器连接方法【详解】...

    交换机是网络中最常见的网络设备,企业或家庭用户对交换机都不陌生.对企业的网络管理员来说,不论高端还是低端,交换机绝对是网络中非常重要的设备,并且数量较多,搞清楚交换机之间的连接更有助于工作的开展. 第 ...

  4. xp系统无法访问局域网计算机,xp拒绝访问| windows xp系统局域网拒绝访问怎么办...

    在一个办公室环境内,windows xp系统用户可以设置一个局域网,方便办公室内的人员进行数据资料等的交流.不过有用户反映系统访问局域网计算机时遇到系统弹出"您可能没有权限使用网络资源.请与 ...

  5. mysql多个字符串连接池_使用Coroutine\Channel实现一个简单的MySQL连接池

    Channel通道,类似于go语言的chan,支持多生产者协程和多消费者协程,Swoole底层自动实现了协程的切换和调度 Channel实现原理 通道与PHP的Array类似,仅占用内存,没有其他额外 ...

  6. java访问数据库方式_java数据库访问(二)—JDBC方式(配合连接池)

    上文记录了最基础的JDBC连接数据库的方法,但能看出一个问题,就是要不断的重复去创建connection和关闭connection,如果在对数据库的访问比较频繁的情况下,这种处理方式方式在性能方面是不 ...

  7. dbcp连接池配置详解_重学MySQL:事务与连接池,一文详解带你搞懂

    拼多多三面惨败,java中间件.数据库与spring框架,答不上... 吊打MySQL:21性能优化实践+学习导图+55面试+笔记+20高频知识点 Mysql事务 事务: 事务指逻辑上的一组操作,组成 ...

  8. SpringBoot使用Redis 数据访问(单点、集群、哨兵、连接池、Pipline、分布式框架Redisson、解决方案)

    目录 Redis 文献资料 用Redis编程 Redis模块API 教程和常见问题解答 管理 嵌入式和物联网 故障排除 Redis集群 其他基于Redis的分布式系统 在SSD和永久性存储器上进行Re ...

  9. golang mysql断线_MySQL的连接池、异步、断线重连-Go语言中文社区

    MySQL长连接 MySQL短连接每次请求操作数据库都需要建立与MySQL服务器建立TCP连接,这是需要时间开销的.TCP连接需要3次网络通信.这样就增加了一定的延时和额外的IO消耗.请求结束后会关闭 ...

最新文章

  1. PyTorch框架:(1)基本处理操作
  2. python 类装饰器 __set___python装饰器代替set get方法实例
  3. [Leedcode][JAVA][第300题][最长上上子序列][动态规划][压缩空间]
  4. 上交大博导:写给不想做学术的你
  5. DevExpress之TreeList用法
  6. 冲击年薪50万的AI学习指南,限时免费~
  7. 一部分 数据 迁移_yugong异构数据库迁移与同步
  8. maven全局配置文件settings.xml详解
  9. 互联网日报 | 前11月全国网购超10万亿元;B站8月月活首次突破2亿;华为Mate40标准版开启预售...
  10. 8. Zigbee应用程序框架开发指南 - 事件
  11. 【BDTC 2016】网络与通讯大数据论坛:大数据价值及合规性探索
  12. [c++] 计算太阳高度角
  13. 扎克伯格----转自Jessica巨人
  14. 《数据中台架构:企业数据化最佳实践》:感受数据中台建设五步法
  15. 解决win10在安装Android-studio时提示HAXM无法安装问题
  16. Create database/Create table 示例(Sql Server2005语法)
  17. 【VUE】vue+vue-cropper实现上传剪裁图片
  18. 高质量AI c++工程师课程~~强推,希望你少走弯路
  19. 最长回文子串Java
  20. MOOC高级语言程序设计第七章课后作业

热门文章

  1. MySQL_常见函数
  2. 二十万字C/C++、嵌入式软开面试题全集宝典七
  3. 回溯法模板(矩阵中操作)
  4. Opencv模块功能介绍
  5. swift. 扩展类添加属性_Swift中用到extension的一些基本的扩展功能讲解
  6. Windows API 的数据类型与 Delphi 数据类型对照表
  7. Delphi程序员代码编写标准指南
  8. FFmpeg入门之常用命令
  9. panel.setLayout(null);
  10. Java获得随机数字