Heim Datenbank MySQL-Tutorial mysqlcapi简单连接池_MySQL

mysqlcapi简单连接池_MySQL

Jun 01, 2016 pm 01:19 PM
连接数据库

bitsCN.com

连接池为了解决频繁的创建、销毁所带来的系统开销。

简而言之,就是 自己先创建一定量的连接,然后在需要的时候取出一条连接使用。

当然如果你只有一个线程连接数据库,而且不是实时返回结果,那么你完全不必用连接池。

想一下网络大型游戏服务器,你就明白为什么需要连接池了。

自己敲代码写了一个简单的类,实现连接池,虽然没有mysql++那么强大,但是还是自己有收获。

Csqlpool.h 头文件实现如下:

 

#pragma once#include <WinSock2.h>#include <mysql.h>#include <list>#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<MYSQL *> m_sql_free;   //空闲连接     	static Csqlpool *pSqlPool;      	CRITICAL_SECTION m_session;    //获取空闲线程};
Nach dem Login kopieren

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;}
Nach dem Login kopieren

testsqlpool.cpp 测试文件实现如下:

// testsqlpool.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "Csqlpool.h"#include <iostream>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<<"连接错误"<<endl;	}	HANDLE phan[2] ;	DWORD threadid[2];	int n1 = 0, n2 = 100;;	phan[0]  = CreateThread( NULL , 0 ,  ThreadProc , &n1 ,  0 , &threadid[0] );	phan[1]  = CreateThread( NULL , 0 , ThreadProc , &n2 ,   0 , &threadid[1] );	WaitForMultipleObjects( 2 , phan , true ,  INFINITE );	CloseHandle(phan[0]);	CloseHandle(phan[1]);	return 0;}DWORD WINAPI ThreadProc( LPVOID lpParameter){	int index = *(int *)lpParameter ;	int i = 1; 	MYSQL *sql = psql->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"<<endl;			}			++i;		}		psql->RelConnect(sql);	}	return 0;}
Nach dem Login kopieren
bitsCN.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie lese ich die ersten paar Datensätze in einer Datenbank mit PHP? Wie lese ich die ersten paar Datensätze in einer Datenbank mit PHP? Mar 22, 2024 am 10:03 AM

Wie lese ich die ersten paar Datensätze in einer Datenbank mit PHP? Bei der Entwicklung von Webanwendungen müssen wir häufig Daten aus der Datenbank lesen und dem Benutzer anzeigen. Manchmal müssen wir nur die ersten paar Datensätze in der Datenbank anzeigen, nicht den gesamten Inhalt. In diesem Artikel erfahren Sie, wie Sie mit PHP die ersten Datensätze in der Datenbank lesen und spezifische Codebeispiele bereitstellen. Gehen Sie zunächst davon aus, dass Sie eine Verbindung zur Datenbank hergestellt und die Tabelle ausgewählt haben, die Sie bearbeiten möchten. Das Folgende ist ein einfaches Beispiel für eine Datenbankverbindung:

Wie gehe ich mit SQLException um, wenn ich eine Verbindung zur Datenbank in Java herstelle? Wie gehe ich mit SQLException um, wenn ich eine Verbindung zur Datenbank in Java herstelle? Jun 24, 2023 pm 09:23 PM

In Java-Programmen ist das Herstellen einer Verbindung zur Datenbank ein sehr häufiger Vorgang. Obwohl vorgefertigte Klassenbibliotheken und Tools zum Herstellen einer Verbindung zur Datenbank verwendet werden können, können während der Programmentwicklung dennoch verschiedene abnormale Situationen auftreten, darunter SQLException. SQLException ist eine von Java bereitgestellte Ausnahmeklasse. Sie beschreibt Fehler, die beim Zugriff auf die Datenbank auftreten, z. B. Fehler in der Abfrageanweisung, nicht vorhandene Tabellen, Verbindungsabbrüche usw. Für Java-Programmierer, insbesondere diejenigen, die JDBC (Java Data

So stellen Sie eine Verbindung zur Datenbank in der Go-Sprache her So stellen Sie eine Verbindung zur Datenbank in der Go-Sprache her Dec 12, 2023 pm 03:51 PM

Die Go-Sprache stellt eine Verbindung zur Datenbank her, indem sie den Datenbanktreiber importiert, eine Datenbankverbindung herstellt, SQL-Anweisungen ausführt, vorbereitete Anweisungen verwendet und Transaktionen verarbeitet. Detaillierte Einführung: 1. Importieren Sie den Datenbanktreiber und verwenden Sie das Paket github.com/go-sql-driver/mysql, um eine Verbindung zur MySQL-Datenbank herzustellen. 2. Stellen Sie eine Datenbankverbindung her und geben Sie die Datenbankverbindungsinformationen an, einschließlich der Datenbankadresse und des Benutzers Name, Passwort usw. Stellen Sie eine Datenbankverbindung usw. über die Funktion sql.Open her.

Verwenden der Go-Sprache zum Herstellen einer Verbindung zur Datenbank: Verbessern Sie die Anwendungsleistung und -effizienz Verwenden der Go-Sprache zum Herstellen einer Verbindung zur Datenbank: Verbessern Sie die Anwendungsleistung und -effizienz Jan 23, 2024 am 08:57 AM

Verwendung der Go-Sprache zum Herstellen einer Verbindung zur Datenbank: Verbesserung der Anwendungsleistung und -effizienz Mit der Entwicklung von Anwendungen und der steigenden Anzahl von Benutzern wird die Datenspeicherung und -verarbeitung immer wichtiger. Um die Leistung und Effizienz von Anwendungen zu verbessern, ist die ordnungsgemäße Verbindung und der Betrieb der Datenbank von entscheidender Bedeutung. Als schnelle, zuverlässige und hochgradig parallele Entwicklungssprache hat die Go-Sprache das Potenzial, eine effiziente Leistung bei der Verarbeitung von Datenbanken zu bieten. In diesem Artikel wird erläutert, wie Sie mithilfe der Go-Sprache eine Verbindung zur Datenbank herstellen, und es werden einige Codebeispiele bereitgestellt. Installieren Sie den Datenbanktreiber mit der Go-Sprache

Schritte und Techniken zur Implementierung der Produktbestandszählung mit PHP Schritte und Techniken zur Implementierung der Produktbestandszählung mit PHP Aug 18, 2023 am 08:39 AM

Schritte und Techniken zur Implementierung des Produktinventars in PHP In der E-Commerce-Branche ist die Verwaltung des Produktinventars eine sehr wichtige Aufgabe. Durch eine rechtzeitige und genaue Bestandszählung können Verkaufsverzögerungen, Kundenbeschwerden und andere Probleme aufgrund von Bestandsfehlern vermieden werden. In diesem Artikel werden die Schritte und Techniken zur Verwendung von PHP zur Implementierung der Produktbestandszählung vorgestellt und Codebeispiele bereitgestellt. Schritt 1: Erstellen Sie eine Datenbank. Zuerst müssen wir eine Datenbank erstellen, um Produktinformationen zu speichern. Erstellen Sie eine Datenbank mit dem Namen „inventory“ und dann eine Datenbank mit dem Namen „prod

Erste Schritte mit der Go-Sprache: Grundkonzepte von Datenbankverbindungen Erste Schritte mit der Go-Sprache: Grundkonzepte von Datenbankverbindungen Jan 23, 2024 am 08:17 AM

Lernen Sie die Go-Sprache: Grundkenntnisse in der Verbindung mit Datenbanken sind erforderlich. Die Go-Sprache ist eine Open-Source-Programmiersprache. Aufgrund ihrer einfachen und effizienten Funktionen wird sie von immer mehr Entwicklern geliebt und verwendet. Während des Entwicklungsprozesses ist es häufig erforderlich, eine Verbindung mit der Datenbank herzustellen, um Vorgänge wie Lesen, Schreiben, Aktualisieren und Löschen von Daten auszuführen. Daher ist es eine sehr wichtige Fähigkeit, zu lernen, wie man eine Verbindung zu einer Datenbank in der Go-Sprache herstellt. Datenbanktreiber In der Go-Sprache ist ein Datenbanktreiber erforderlich, um eine Verbindung zur Datenbank herzustellen. Derzeit sind die wichtigsten Datenbanktreiber der Go-Sprache:

So installieren und konfigurieren Sie PHP auf einem Ubuntu-System, um eine Verbindung zur MSSQL-Datenbank herzustellen So installieren und konfigurieren Sie PHP auf einem Ubuntu-System, um eine Verbindung zur MSSQL-Datenbank herzustellen Feb 29, 2024 am 10:06 AM

Die Installation und Konfiguration von PHP auf Ubuntu-Systemen zur Verbindung mit MSSQL-Datenbanken ist eine häufige Aufgabe, insbesondere bei der Entwicklung von Webanwendungen. In diesem Artikel stellen wir vor, wie man PHP und MSSQL-Erweiterungen installiert und Datenbankverbindungen auf Ubuntu-Systemen konfiguriert, und stellen gleichzeitig spezifische Codebeispiele bereit. Schritt 1: PHP- und MSSQL-Erweiterungen installieren PHP installieren Zunächst müssen Sie sicherstellen, dass PHP auf Ihrem Ubuntu-System installiert ist. PHP kann mit dem folgenden Befehl installiert werden: sudoaptu

Was sind die wichtigen Funktionen des Jar-Pakets von MySQL? Was sind die wichtigen Funktionen des Jar-Pakets von MySQL? Mar 01, 2024 pm 09:45 PM

Titel: Was sind die wichtigen Funktionen des Jar-Pakets von MySQL? MySQL ist ein beliebtes relationales Datenbankverwaltungssystem, das viele Java-Entwickler bei der Entwicklung von Anwendungen verwenden. Um mit der MySQL-Datenbank in einem Java-Projekt zu interagieren, wird normalerweise das offizielle Java-Treiber-Jar-Paket verwendet, das von MySQL bereitgestellt wird. Das Jar-Paket von MySQL verfügt über viele wichtige Funktionen. In diesem Artikel werden einige davon vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Stellen Sie eine Verbindung zu MyS her

See all articles