c 连接 mysql
来源:互联网 发布:网络家装公司 编辑:程序博客网 时间:2024/06/08 19:43
#define DB_HOST "172.25.2.50"#define DB_PORT 3306#define DB_USER "root"#define DB_PASSWD "123456"#define DB_NAME "db_dev"#include <mysql.h>#include <list>#define MIN_CONNECT_SIZE 10#define MAX_CONNECT_SIZE 20using namespace std;class DBMgr{public:DBMgr();~DBMgr();private:MYSQL* CreateConnect();//create a sql connectpublic:bool InitPool();//initialize memory poolMYSQL* GetConnect();//get a sql connectbool ReleaseConnect(MYSQL* mysql);//release a sql connectMYSQL_RES* GetQuery(MYSQL* mysql, const char* query);//get a sql queryvoid ReleaseQuery(MYSQL_RES* res);//release sql querybool Close();public:/*bool Initialize();bool Query(const char* str);*/private:list<MYSQL*> m_sql_pool;unsigned int m_curSize;/*MYSQL* m_mysql;MYSQL_RES* m_res;MYSQL_ROW m_row;*/};extern DBMgr* g_DBMgr;
#include "DBMgr.h"#include <stdio.h>DBMgr::DBMgr(){}DBMgr::~DBMgr(){}bool DBMgr::InitPool(){for (int i = 0; i < MIN_CONNECT_SIZE; ++i){MYSQL* mysql;mysql = CreateConnect();if (mysql){m_sql_pool.push_back(mysql);++m_curSize;}else{printf("[InitPool] No.%d connect to sql failed", i);}}return true;}MYSQL* DBMgr::CreateConnect(){MYSQL* mysql;mysql = mysql_init((MYSQL*)NULL);if (NULL == mysql){printf("[CreateConnect] mysql init failed");return (MYSQL*)NULL;}if (mysql_real_connect(mysql, DB_HOST, DB_USER, DB_PASSWD, DB_NAME, DB_PORT, NULL, 0)){return mysql;}return (MYSQL*)NULL;}MYSQL* DBMgr::GetConnect(){if (m_sql_pool.size()){MYSQL* mysql = m_sql_pool.front();m_sql_pool.pop_front();printf("[GetConnect] pool size: %d\n", m_sql_pool.size());return mysql;}else{if (m_curSize < MAX_CONNECT_SIZE){MYSQL* mysql;mysql = CreateConnect();if (mysql){++m_curSize;printf("[GetConnect] pool is empty, create a new connect\n");return mysql;}}}printf("[GetConnect] max connect size, please try again!\n");return (MYSQL*)NULL;}bool DBMgr::ReleaseConnect(MYSQL* mysql){if (m_sql_pool.size() < MAX_CONNECT_SIZE){m_sql_pool.push_back(mysql);printf("[ReleaseConnect] pool size: %d\n", m_sql_pool.size());return true;}else{printf("[ReleaseConnect] sql pool is overflow!");}return false;}MYSQL_RES* DBMgr::GetQuery(MYSQL* mysql, const char* query){int result = mysql_real_query(mysql, query, strlen(query));if (result){printf("[GetQuery] select error %d: %s !\n", mysql_errno(mysql), mysql_error(mysql));return (MYSQL_RES*)NULL;}return mysql_store_result(mysql);}void DBMgr::ReleaseQuery(MYSQL_RES* res){mysql_free_result(res);}bool DBMgr::Close(){while (!m_sql_pool.empty()){MYSQL* mysql = m_sql_pool.front();if (mysql){mysql_close(mysql);}m_sql_pool.pop_front();}//mysql_free_result(m_res);//mysql_close(m_mysql);printf("[close] db connection close!\n");return true;}
0 0
- c连接MYSQL例子
- c连接mysql数据库
- C#ODBC连接MYSQL
- C 连接mysql
- VS2005 C 连接 MySql
- C语言连接mysql
- c连接mysql数据库
- C API连接MYSQL
- c 连接 mysql
- C语言连接Mysql
- C语言连接mysql
- c语言mysql连接
- C#--如何连接MySQL
- c语言连接MySQL
- c语言连接 mysql
- c语言连接mysql
- C语言连接mysql
- c 连接 mysql
- STL系列之一 deque双向队列
- jQuery.ajax
- MySQL 5.1安装到最后一步start service错误解决方法
- 九度-北航-1163-素数
- 蓝桥杯 历届试题 小朋友排队 【树状数组】+【逆序数】
- c 连接 mysql
- jQuery省级联动(ajax+select)
- 23种设计模式(22):享元模式(2)
- STL系列之二 stack栈
- 用异或来交换两个变量能提高速度是错误的
- error LNK2019: 无法解析的外部符号 opencv
- jQuery显示隐藏
- Dijstra算法的代码实现及解释(最短路径问题)
- Word Amalgamation hdu1113