mysqlcapi简单连接池_MySQL
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; //获取空闲线程};
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 <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;}

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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:

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

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.

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 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

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:

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

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
