MYSQL++介绍

简介

MYSQL++是对于MYSQL C API的C++完全包装。

MYSQL++能够至少做如下几件事情

1. 连接数据库

  • 通过TCP连接数据库
  • 通过WINDOWS命名管道连接数据库
  • UNIX域SOCKET连接数据库

所有的链接操作可以通过使用mysqlpp::Connection类型进行,为了方便起见,mysqlpp还提供了TCPConnection,UnixDomainSocketConnection以及WindowsNamedPipeConnection。但是一般情况只需要通过Connection的不同Connect方法overload就可以进行连接。

2. 增删改查方法

MYSQL++支持的查询方法是

  • 直接使用Query stream输入SQL语句
  • 使用Template Query采用类似于printf的方式进行输入SQL语句
  • 使用SSQLS,通过类似于Hibernate的方式对Data Struct进行操作来操作底层数据库

3. 遍历数据

MYSQL++支持三种遍历数据结果的方法,

  • 所有数据结果行都拿出来到内存(store)
  • 游标一样逐行操作(use)
  • 类似于Hibernate的利用DataStruct进行直接操作的方式

4. 错误处理

错误处理主要有两种方式

  • C++风格抛出异常
  • C语言风格返回错误值

相关类介绍

mysqlpp::OpeitonalExceptions

通过查看源码,我看到OptionalExceptions就是一个对于一个表示“是否需要抛出异常”的变量的包装。在Connection类型的内容,会在出现错误的时候调用OpetionalExceptions.throw_exceptions( )方法来查看是否需要使用异常的手段来表示错误。

mysqlpp::Connection

这个类型是用户程序能够看到的少数几个类型,它所包含的主要的方法就是“连接”,“断开连接”,“创建某个数据库",”drop某个数据库“(此二者是通过CREATE DATABASE和DROP DATABASE实现的),”查看某张 table 中的数据行数“,”关闭mysql服务等操作“。

同时,该类型也可以返回一个mysqlpp::Query类型,该类型主要负责查询操作。另外,当我们以后看到mysqlpp::Query的时候,我们很容易发现它的构造函数必定需要一个mysqlpp::Connection,也就是说mysqlpp::Query的所有操作,其实也就是再次调用mysqlpp::Connection的对应方法,后者再去调用mysqlpp::DBDriver来做真正的数据库操作。

需要注意的是,Connection其实就是一个代理类型,所有的和数据库进行操作的非查询类动作(包括了连接,查看连接是否还在,MYSQL的操作出错的错误信息和错误号,通信方式(ipc_info方法),选择当前DB)都是交给mysqlpp::DBDriver来做的。他才是真正的执行者。

mysqlpp:: Query

进行SQL语句的增删改查

mysqlpp::StoreQueryResult

所有数据结果行

mysqlpp::UseQueryResult

游标一样逐行操作

mysqlpp::ConnectionPool

连接池

连接池

mysql+±3.2.3/lib/cpool.cpp 这是源码文件

virtual Connection* exchange(const Connection* pc); //将当前连接断开重新开启一个连接
virtual Connection* grab();              //从连接池获取一个连接,如果没有创建一个
Connection* safe_grab();                //从连接池获取一个可用的连接
virtual void release(const Connection* pc);      //将一个连接置为未使用状态
void shrink()                                       //从连接池删除未使用的连接
void remove(const Connection* pc) //从连接池中删除指定连接

更多使用参考https://www.cnblogs.com/aicro/p/3633494.html

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值