You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

100 lines
3.5 KiB
C

1 year ago
/****************************************************************************
** File name : HTDatabase.h
** Description : define database api
** Create date : 2018.09.01
** Auther by : Liuyx
** Version info : V1.0.01
** Copyright (C) 2002-2018 xi'an huatek, Inc Co., Ltd
** Update record:
** DATE AUTHER DESC
** -------------------------------------------------------------------------
** 2018.09.01 Liuyx first build
****************************************************************************/
#ifndef __HT_DATABASE_H
#define __HT_DATABASE_H
#include "HTPublic.h"
#include "mysql.h"
#ifdef _WIN32
//#pragma comment(lib,"ociliba.lib")
#pragma comment(lib,"libmysql.lib")
#endif
typedef std::list<MYSQL *> CONNECTION_HANDLE_LIST;
typedef std::list<MYSQL *>::iterator ITER_CONNECTION_HANDLE_LIST;
#define CONNECTION_NUM 10 //ͬʱ<CDAC>򿪵<EFBFBD><F2BFAAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
class CDBMySQL
{
public:
CDBMySQL();
CDBMySQL(const char *host, const char *user, const char *password, const char *db, unsigned int port=3306);
virtual ~CDBMySQL();
public:
bool dbConnectPool(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
void dbFreeConnectPool() ; //<2F>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ
bool dbAutoCommit(MYSQL *pMysql, bool bStart); // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool dbCommit(MYSQL *pMysql);
bool InsertRecordBitch(const char pszSql[][256], int count);
bool AddInsertRecord(MYSQL *pHandle, const char *szSql);
MYSQL_RES* SelectRecord(const char *szSql); //ѡ<><D1A1><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD><EFBFBD>
bool SelectDB(const char *szDB); //ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
bool UpdateRecord(const char *szSql); //<2F><><EFBFBD>¼<EFBFBD>¼
bool InsertRecord(const char *szSql); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼
bool DelRecord(const char *szSql); //ɾ<><C9BE><EFBFBD><EFBFBD>¼
bool IsEnd(MYSQL_RES *myquery); //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
void SeekData(MYSQL_RES *myquery, int offset); //<2F><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void FreeRecord(MYSQL_RES *myquery); //<2F>ͷŽ<CDB7><C5BD><EFBFBD><EFBFBD><EFBFBD>
unsigned int GetFieldNum(MYSQL_RES *myquery); //<2F>õ<EFBFBD><C3B5>ֶ<EFBFBD><D6B6><EFBFBD>
MYSQL_ROW GetRecord(MYSQL_RES *myquery); //<2F>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>
my_ulonglong GetRowNum(MYSQL_RES *myquery); //<2F>õ<EFBFBD><C3B5><EFBFBD>¼<EFBFBD><C2BC>
char* getLastError(MYSQL* pMySql); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
char* GetState(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
char* GetServerInfo(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
int GetProtocolInfo(); //Э<><D0AD><EFBFBD><EFBFBD>Ϣ
char* GetHostInfo(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
char* GetClientInfo(); //<2F>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>Ϣ
char* GetFieldName(MYSQL_RES *myquery, int FieldNum); //<2F>ֶ<EFBFBD><D6B6><EFBFBD>
bool LockTable(const char *TableName, const char *Priority); //<2F><><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
bool UnlockTable(); //<2F><><EFBFBD><EFBFBD>
bool SetCharset();
//int CreateDB(char *db); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ⣬<DDBF><E2A3AC><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ϣ
//int DropDB(char *db); //ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>,<2C><><EFBFBD>ش<EFBFBD><D8B4><EFBFBD><EFBFBD><EFBFBD>Ϣ
MYSQL* GetIdleMySql(); //<2F><>ȡһ<C8A1><D2BB><EFBFBD><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
void SetIdleMysql(MYSQL* pMySql); //<2F><>ʹ<EFBFBD>ö<EFBFBD><C3B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD>һ<EFBFBD><D2BB>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD>ϵľ<CFB5><C4BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB5BD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>
static CDBMySQL* Instance();
public:
//MYSQL m_mysql; //<2F><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD><EFBFBD>Ӿ<EFBFBD><D3BE><EFBFBD>
MYSQL_ROW m_row; //<2F><>¼<EFBFBD><C2BC>(<28><><EFBFBD><EFBFBD>)
MYSQL_FIELD *m_field; //<2F>ֶ<EFBFBD><D6B6><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CONNECTION_HANDLE_LIST m_lsBusyList; //<2F><><EFBFBD><EFBFBD>ʹ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>Ӿ<EFBFBD><D3BE><EFBFBD>
CONNECTION_HANDLE_LIST m_lsIdleList; //δʹ<CEB4>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>Ӿ<EFBFBD><D3BE><EFBFBD>
mutex m_csList;
private:
static CDBMySQL* p_dbHandle ;
char m_host[20]; //<2F><><EFBFBD><EFBFBD>
char m_user[20]; //<2F>û<EFBFBD><C3BB><EFBFBD>
char m_password[20]; //<2F><><EFBFBD><EFBFBD>
char m_db[20]; //<2F><><EFBFBD>ݿ<EFBFBD><DDBF><EFBFBD>
unsigned int m_port; //<2F>˿<EFBFBD>
unsigned int m_min; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
};
#endif // __HT_DATABASE_H