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