Mysql下篇
#ifndef _MYSQL_CONNECTION_
#define _MYSQL_CONNECTION_
//c++
#include
#include
#include
#include
#include
//mysql driver
#include
#include
//mysql execute
#include
#include
#include
#include
#include
//thread mutex
#include
using namespace sql;
using delFunc = std::function;
class ConnectionPool
{
public:
//获取数据库连接池对象 static单例模式
static ConnectionPool* getInstance();
//得到一条连接
auto getConnect()->std::shared_ptr;
//归还一条连接
auto retConnect(std::shared_ptr &ret)->void;
~ConnectionPool();
private:
ConnectionPool(std::string name, std::string pwd, std::string nurl, int maxSize);
//初始化连接池
auto initConnectPool(int initialSize)->void;
//毁坏连接池
auto destoryPool()->void;
//destory one connection
auto destoryOneConn()->void;
//扩大数据库连接池
auto expandPool(int size)->void;
//缩小数据库连接池
auto reducePool(int size)->void;
//add conn
auto addConn(int size)->void;
public:
//get size
auto getPoolSize()->int;
private:
std::string username; //帐号
std::string password; //密码
std::string url; //连接url
int poolSize; //pool size
//存放所有连接
std::list> conList;
static ConnectionPool *pool;//连接池对象
std::mutex lock;//锁
Driver *driver;//mysql driver
};
#endif
mysql_connect.cpp
#include
#include
#include
#include "mysql_connect.h"
ConnectionPool*
ConnectionPool::pool = nullptr;
//private
//构造函数
ConnectionPool::ConnectionPool(std::string name, std::string pwd, std::string nur