国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題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
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

mysqlcapi簡單連接池_MySQL

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 19:06:20
文檔

mysqlcapi簡單連接池_MySQL

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

bitsCN.com

連接池為了解決頻繁的創(chuàng)建、銷毀所帶來的系統(tǒng)開銷。

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

當(dāng)然如果你只有一個(gè)線程連接數(shù)據(jù)庫,而且不是實(shí)時(shí)返回結(jié)果,那么你完全不必用連接池。

想一下網(wǎng)絡(luò)大型游戲服務(wù)器,你就明白為什么需要連接池了。

自己敲代碼寫了一個(gè)簡單的類,實(shí)現(xiàn)連接池,雖然沒有mysql++那么強(qiáng)大,但是還是自己有收獲。

Csqlpool.h 頭文件實(shí)現(xiàn)如下:

#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);	//選擇數(shù)據(jù)庫	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 實(shí)現(xiàn)如下:
#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)	//選擇數(shù)據(jù)庫{	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 測(cè)試文件實(shí)現(xiàn)如下:

// testsqlpool.cpp : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。//#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<<"連接錯(cuò)誤"<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

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

mysqlcapi簡單連接池_MySQL

mysqlcapi簡單連接池_MySQL:bitsCN.com 連接池為了解決頻繁的創(chuàng)建、銷毀所帶來的系統(tǒng)開銷。簡而言之,就是 自己先創(chuàng)建一定量的連接,然后在需要的時(shí)候取出一條連接使用。當(dāng)然如果你只有一個(gè)線程連接數(shù)據(jù)庫,而且不是實(shí)時(shí)返回結(jié)果,那么你完全不必用連接池。想一下網(wǎng)絡(luò)大型游戲服務(wù)器,你
推薦度:
標(biāo)簽: 連接 簡單 而且
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 亚洲欧美在线视频 | 欧美日韩精品免费一区二区三区 | 欧美日韩另类国产 | 国产福利一区二区三区在线视频 | 久久亚洲不卡一区二区 | 久久精品国产一区 | 亚洲欧洲国产成人综合一本 | 日韩在线不卡 | 亚洲色图第四页 | 亚洲乱码中文论理电影 | 免费永久在线观看黄网 | 精品一区二区三区亚洲 | 欧美激情综合网 | 久草综合在线 | 国产高清免费视频 | 亚洲日本一区二区三区高清在线 | 爽妇网s| 日韩在线欧美高清一区 | 国产精彩视频 | 久久久久久久国产高清 | 亚洲国产一成人久久精品 | 久久久久久久久国产 | 国产精品永久免费自在线观看 | 欧美日韩中文字幕在线 | 日韩欧美在线第一页 | 亚洲精品国产第七页在线 | 精品久久亚洲一级α | 在线观看免费精品国产 | 可以免费观看的毛片 | 日本黄 色 成 年 人免费观看 | 国产精品久久久久9999 | 视频一区久久 | 最新国产精品视频免费看 | 91字幕网| 欧美精品1区 | 人与禽一级一级毛片 | 欧美日韩亚洲精品国产色 | 亚洲欧美一区二区三区九九九 | 亚洲成人99 | 99久久精品免费国产一区二区三区 | 国产a久久精品一区二区三区 |