<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        mysqlcapi簡單連接池_MySQL

        來源:懂視網 責編:小采 時間:2020-11-09 19:06:20
        文檔

        mysqlcapi簡單連接池_MySQL

        mysqlcapi簡單連接池_MySQL:bitsCN.com 連接池為了解決頻繁的創建、銷毀所帶來的系統開銷。簡而言之,就是 自己先創建一定量的連接,然后在需要的時候取出一條連接使用。當然如果你只有一個線程連接數據庫,而且不是實時返回結果,那么你完全不必用連接池。想一下網絡大型游戲服務器,你
        推薦度:
        導讀mysqlcapi簡單連接池_MySQL:bitsCN.com 連接池為了解決頻繁的創建、銷毀所帶來的系統開銷。簡而言之,就是 自己先創建一定量的連接,然后在需要的時候取出一條連接使用。當然如果你只有一個線程連接數據庫,而且不是實時返回結果,那么你完全不必用連接池。想一下網絡大型游戲服務器,你

        bitsCN.com

        連接池為了解決頻繁的創建、銷毀所帶來的系統開銷。

        簡而言之,就是 自己先創建一定量的連接,然后在需要的時候取出一條連接使用。

        當然如果你只有一個線程連接數據庫,而且不是實時返回結果,那么你完全不必用連接池。

        想一下網絡大型游戲服務器,你就明白為什么需要連接池了。

        自己敲代碼寫了一個簡單的類,實現連接池,雖然沒有mysql++那么強大,但是還是自己有收獲。

        Csqlpool.h 頭文件實現如下:

        #pragma once#include #include #include #pragma comment( lib , "libmysql.lib" )using namespace std;class Csqlpool{public:	~Csqlpool(void);	static Csqlpool *GetSqlPool();	bool IniSqlPool( const char *host , const char *name , const char *pwd , unsigned int port , unsigned int conMax ); //初始化連接池	bool SelectDB( MYSQL *sql, const char *DB);	//選擇數據庫	MYSQL *GetConnect(); // 獲取連接	void RelConnect(MYSQL *sql) ; // 釋放連接	MYSQL_RES* GetQuery( MYSQL *sql , const char *query); //mysql操作 增刪查改	void RelQuery(MYSQL_RES *res); //釋放MYSQL_RES資源	bool Query(MYSQL *sql , const char *query); //增、刪、改操作protected:	Csqlpool(void);private:	list m_sql_free; //空閑連接 	static Csqlpool *pSqlPool; 	CRITICAL_SECTION m_session; //獲取空閑線程};
        Csqlpool.cpp 實現如下:
        #include "StdAfx.h"#include "Csqlpool.h"Csqlpool *Csqlpool::pSqlPool = NULL;Csqlpool::Csqlpool(void){	InitializeCriticalSection( &m_session );}Csqlpool::~Csqlpool(void){	while ( m_sql_free.size() )	{	mysql_close( m_sql_free.front() );	m_sql_free.pop_front();	}	DeleteCriticalSection(&m_session);}Csqlpool* Csqlpool::GetSqlPool(){	if ( pSqlPool == NULL )	{	return new Csqlpool;	}	return pSqlPool;}bool Csqlpool::IniSqlPool( const char *host ,const char *name , const char *pwd , unsigned int port , unsigned int conMax ) //初始化連接池{	int nsum = 0 ;	for (unsigned int i = 0 ; i < conMax ;++i )	{	MYSQL *pmysql;	pmysql = mysql_init( (MYSQL*)NULL );	if ( pmysql != NULL )	{	if ( mysql_real_connect( pmysql , host , name , pwd , NULL , 3306 , NULL , 0 ) )	{	m_sql_free.push_back(pmysql);	}	else	{	if ( nsum++ == 100 )	{	return false;	}	continue;	}	}	continue;	}	return true;}bool Csqlpool::SelectDB( MYSQL *sql, const char *DB)	//選擇數據庫{	if(mysql_select_db(sql , DB))	{	return false;	}	return true;}MYSQL* Csqlpool::GetConnect() // 獲取連接{	if ( m_sql_free.size() )	{	EnterCriticalSection(&m_session);	MYSQL *mysql = m_sql_free.front();	m_sql_free.pop_front();	LeaveCriticalSection(&m_session);	return mysql;	}	else	return NULL;}void Csqlpool::RelConnect(MYSQL *sql) // 釋放連接{	EnterCriticalSection(&m_session);	m_sql_free.push_back(sql);	LeaveCriticalSection(&m_session);}MYSQL_RES* Csqlpool::GetQuery( MYSQL *sql , const char *query) //查詢操作{	if ( mysql_query( sql , query ) == 0 )	{	return mysql_store_result( sql );	}	else	return NULL;}void Csqlpool::RelQuery(MYSQL_RES *res) //mysql_res release{	mysql_free_result(res);}bool Csqlpool::Query(MYSQL *sql , const char *query) //增、刪、改操作{	if ( mysql_query( sql , query ) )	{	return false;	}	return true;}

        testsqlpool.cpp 測試文件實現如下:

        // testsqlpool.cpp : 定義控制臺應用程序的入口點。//#include "stdafx.h"#include "Csqlpool.h"#include using namespace std;Csqlpool *psql = Csqlpool::GetSqlPool();DWORD WINAPI ThreadProc( LPVOID lpParameter);int _tmain(int argc, _TCHAR* argv[]){	if(!psql->IniSqlPool("127.0.0.1" , "root" ,"123",3306,10))	{	cout<<"連接錯誤"<GetConnect();	string stemp = "insert into actor( actor_id , first_name , last_name,last_update )values(/"";	string strsql;	char str[10];	if ( psql->SelectDB(sql , "sakila") )	{	while ( i != 100 )	{	sprintf( str , "%d" , i+index );	strsql = stemp ;	strsql += str;	strsql += "/",/"0/",/"0/",/"0/")";	if(!sql)	return 0;	if(!psql->Query( sql ,strsql.c_str() ))	{	cout<<"add false"<RelConnect(sql);	}	return 0;}
        bitsCN.com

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        mysqlcapi簡單連接池_MySQL

        mysqlcapi簡單連接池_MySQL:bitsCN.com 連接池為了解決頻繁的創建、銷毀所帶來的系統開銷。簡而言之,就是 自己先創建一定量的連接,然后在需要的時候取出一條連接使用。當然如果你只有一個線程連接數據庫,而且不是實時返回結果,那么你完全不必用連接池。想一下網絡大型游戲服務器,你
        推薦度:
        標簽: 連接 簡單 而且
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产亚洲精品a在线无码| 在线a人片天堂免费观看高清| 99爱在线精品视频免费观看9 | 亚洲精品视频免费| 国产v片免费播放| 国产精品亚洲专区在线播放| 免费无码又爽又高潮视频| 亚洲大尺度无码无码专线一区| 免费中文熟妇在线影片| 亚洲国产欧洲综合997久久| 精品国产免费观看久久久 | 大学生美女毛片免费视频| 自拍日韩亚洲一区在线| 精品国产免费观看久久久| 免费无码国产V片在线观看| 久久久久亚洲AV成人网人人网站| 一级毛片在线完整免费观看| 国产亚洲精品xxx| 99爱在线精品免费观看| 亚洲午夜无码久久久久软件| 亚洲第一区在线观看| 免费毛片a线观看| 亚洲伊人久久大香线蕉啊| 精品无码国产污污污免费| 香蕉免费在线视频| 911精品国产亚洲日本美国韩国| 18女人水真多免费高清毛片| 亚洲Av无码国产一区二区| 亚洲区不卡顿区在线观看| 国产午夜精品久久久久免费视| 亚洲国产a∨无码中文777| 999国内精品永久免费视频| 国产成人综合亚洲一区| 亚洲精品无码永久中文字幕| 0588影视手机免费看片| 美女视频黄a视频全免费网站一区| 久久综合亚洲色HEZYO国产| 99久久久国产精品免费牛牛四川 | 亚洲αv久久久噜噜噜噜噜| 午夜国产精品免费观看| 乱人伦中文视频在线观看免费|