/Database/db_mysql.h
C Header | 281 lines | 146 code | 35 blank | 100 comment | 11 complexity | be77438e3cb20cbaddaaff93491d4c94 MD5 | raw file
Possible License(s): GPL-2.0
- #pragma once
-
- #include "winsock2.h" //??mysql.h????__LCC__?????????winsock.h
- #include "mysql.h"
-
- namespace XGC
- {
- namespace db
- {
- //int (*_mysql_server_init)(int argc, char **argv, char **groups);
- //void (*_mysql_server_end)(void);
- //MYSQL_PARAMETERS *(*_mysql_get_parameters)(void);
- //my_bool (*_mysql_thread_init)(void);
- //void (*_mysql_thread_end)(void);
- static my_ulonglong (*_mysql_num_rows)(MYSQL_RES *res);
- static unsigned int (*_mysql_num_fields)(MYSQL_RES *res);
- static my_bool (*_mysql_eof)(MYSQL_RES *res);
- static MYSQL_FIELD *(*_mysql_fetch_field_direct)(MYSQL_RES *res, unsigned int fieldnr);
- static MYSQL_FIELD * (*_mysql_fetch_fields)(MYSQL_RES *res);
- //MYSQL_ROW_OFFSET (*_mysql_row_tell)(MYSQL_RES *res);
- //MYSQL_FIELD_OFFSET (*_mysql_field_tell)(MYSQL_RES *res);
- static unsigned int (*_mysql_field_count)(MYSQL *mysql);
- static my_ulonglong (*_mysql_affected_rows)(MYSQL *mysql);
- static my_ulonglong (*_mysql_insert_id)(MYSQL *mysql);
- static unsigned int (*_mysql_errno)(MYSQL *mysql);
- static const char * (*_mysql_error)(MYSQL *mysql);
- //const char *(*_mysql_sqlstate)(MYSQL *mysql);
- static unsigned int (*_mysql_warning_count)(MYSQL *mysql);
- static const char * (*_mysql_info)(MYSQL *mysql);
- //unsigned long (*_mysql_thread_id)(MYSQL *mysql);
- //const char * (*_mysql_character_set_name)(MYSQL *mysql);
- //int (*_mysql_set_character_set)(MYSQL *mysql, const char *csname);
- static MYSQL * (*_mysql_init)(MYSQL *mysql);
- //my_bool (*_mysql_ssl_set)(MYSQL *mysql, const char *key, const char *cert, const char *ca, const char *capath, const char *cipher);
- //const char *(*_mysql_get_ssl_cipher)(MYSQL *mysql);
- //my_bool (*_mysql_change_user)(MYSQL *mysql, const char *user, const char *passwd, const char *db);
- static MYSQL * (*_mysql_real_connect)(MYSQL *mysql, const char *host,
- const char *user,
- const char *passwd,
- const char *db,
- unsigned int port,
- const char *unix_socket,
- unsigned long clientflag);
-
- static int (*_mysql_select_db)(MYSQL *mysql, const char *db);
- static int (*_mysql_query)(MYSQL *mysql, const char *q);
- static int (*_mysql_send_query)(MYSQL *mysql, const char *q, unsigned long length);
- static int (*_mysql_real_query)(MYSQL *mysql, const char *q, unsigned long length);
- static MYSQL_RES * (*_mysql_store_result)(MYSQL *mysql);
- static MYSQL_RES * (*_mysql_use_result)(MYSQL *mysql);
-
- //my_bool (*_mysql_master_query)(MYSQL *mysql, const char *q, unsigned long length);
- //my_bool (*_mysql_master_send_query)(MYSQL *mysql, const char *q, unsigned long length);
- //my_bool (*_mysql_slave_query)(MYSQL *mysql, const char *q, unsigned long length);
- //my_bool (*_mysql_slave_send_query)(MYSQL *mysql, const char *q, unsigned long length);
- //void (*_mysql_get_character_set_info)(MYSQL *mysql, MY_CHARSET_INFO *charset);
- //void (*_mysql_enable_rpl_parse)(MYSQL* mysql);
- //void (*_mysql_disable_rpl_parse)(MYSQL* mysql);
- //int (*_mysql_rpl_parse_enabled)(MYSQL* mysql);
- //void (*_mysql_enable_reads_from_master)(MYSQL* mysql);
- //void (*_mysql_disable_reads_from_master)(MYSQL* mysql);
- //my_bool (*_mysql_reads_from_master_enabled)(MYSQL* mysql);
- //enum mysql_rpl_type (*_mysql_rpl_query_type)(const char* q, int len);
- //my_bool (*_mysql_rpl_probe)(MYSQL* mysql);
- //int (*_mysql_set_master)(MYSQL* mysql, const char* host,
- // unsigned int port,
- // const char* user,
- // const char* passwd);
- //int (*_mysql_add_slave)(MYSQL* mysql, const char* host,
- // unsigned int port,
- // const char* user,
- // const char* passwd);
-
- //int (*_mysql_shutdown)(MYSQL *mysql,
- // enum mysql_enum_shutdown_level
- // shutdown_level);
- //int (*_mysql_dump_debug_info)(MYSQL *mysql);
- //int (*_mysql_refresh)(MYSQL *mysql,
- // unsigned int refresh_options);
- //int (*_mysql_kill)(MYSQL *mysql,unsigned long pid);
- //int (*_mysql_set_server_option)(MYSQL *mysql, enum enum_mysql_set_option option);
- static int (*_mysql_ping)(MYSQL *mysql);
- //const char * (*_mysql_stat)(MYSQL *mysql);
- //const char * (*_mysql_get_server_info)(MYSQL *mysql);
- //const char * (*_mysql_get_client_info)(void);
- //unsigned long (*_mysql_get_client_version)(void);
- //const char * (*_mysql_get_host_info)(MYSQL *mysql);
- //unsigned long (*_mysql_get_server_version)(MYSQL *mysql);
- //unsigned int (*_mysql_get_proto_info)(MYSQL *mysql);
- //MYSQL_RES * (*_mysql_list_dbs)(MYSQL *mysql,const char *wild);
- //MYSQL_RES * (*_mysql_list_tables)(MYSQL *mysql,const char *wild);
- //MYSQL_RES * (*_mysql_list_processes)(MYSQL *mysql);
- //int (*_mysql_options)(MYSQL *mysql,enum mysql_option option, const void *arg);
- static void (*_mysql_free_result)(MYSQL_RES *result);
- //void (*_mysql_data_seek)(MYSQL_RES *result, my_ulonglong offset);
- //MYSQL_ROW_OFFSET (*_mysql_row_seek)(MYSQL_RES *result, MYSQL_ROW_OFFSET offset);
- //MYSQL_FIELD_OFFSET (*_mysql_field_seek)(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset);
- static MYSQL_ROW (*_mysql_fetch_row)(MYSQL_RES *result);
- static unsigned long * (*_mysql_fetch_lengths)(MYSQL_RES *result);
- static MYSQL_FIELD * (*_mysql_fetch_field)(MYSQL_RES *result);
- static MYSQL_RES * (*_mysql_list_fields)(MYSQL *mysql, const char *table, const char *wild);
- static unsigned long (*_mysql_escape_string)(char *to,const char *from, unsigned long from_length);
- static unsigned long (*_mysql_hex_string)(char *to,const char *from, unsigned long from_length);
- static unsigned long (*_mysql_real_escape_string)(MYSQL *mysql, char *to,const char *from, unsigned long length);
- //void (*_mysql_debug)(const char *debug);
- //void (*myodbc_remove_escape)(MYSQL *mysql,char *name);
- //unsigned int (*_mysql_thread_safe)(void);
- //my_bool (*_mysql_embedded)(void);
- //MYSQL_MANAGER* (*_mysql_manager_init)(MYSQL_MANAGER* con);
- //MYSQL_MANAGER* (*_mysql_manager_connect)(MYSQL_MANAGER* con,
- // const char* host,
- // const char* user,
- // const char* passwd,
- // unsigned int port);
- //void (*_mysql_manager_close)(MYSQL_MANAGER* con);
- //int (*_mysql_manager_command)(MYSQL_MANAGER* con, const char* cmd, int cmd_len);
- //int (*_mysql_manager_fetch_line)(MYSQL_MANAGER* con, char* res_buf, int res_buf_size);
- //my_bool (*_mysql_read_query_result)(MYSQL *mysql);
- static void (*_mysql_close)(MYSQL *sock);
-
-
-
- class CMySQLRecordSet
- {
- friend class CMySQLConnection;
- public:
- ///????
- CMySQLRecordSet(): m_res(NULL), m_row(NULL)
- {
- }
-
- ///????
- ~CMySQLRecordSet()
- {
- if (m_res)
- _mysql_free_result(m_res);
- }
-
- ///??????
- unsigned int GetRecordCount() { return (m_res ? (unsigned int)_mysql_num_rows(m_res) : 0); }
-
- ///??????
- unsigned int GetFieldCount() { return (m_res ? (unsigned int)_mysql_num_fields(m_res) : 0); }
-
-
- ///????????
- bool GetRecord()
- {
- if (m_res == NULL)
- return false;
- m_row = _mysql_fetch_row(m_res);
- return (m_row != NULL);
- }
-
- ///???????????????
- const char* GetFieldValue(unsigned int nIndex)
- {
- if (m_row == NULL)
- return NULL;
- if (nIndex >= GetFieldCount())
- return NULL;
- return m_row[nIndex];
- }
- private:
- MYSQL_RES* m_res;
- MYSQL_ROW m_row;
- };
-
- //**
- //@brief ??MySQL???
- //*
- //* ??MySQL????????????????????
- //*/
-
- class CMySQLConnection
- {
- public:
- ///??ExecuteEx????
- typedef enum {Failed, NoRecordSet, HasRecordSet} EExecResult;
-
- ///????
- CMySQLConnection(void);
-
- ///????
- ~CMySQLConnection(void);
-
- ///??????
- void SetConnectionString(const char* pszServerAddr, int nServerPort,
- const char* pszDBName, const char* pszUserID, const char* pszPassword);
-
- ///????
- BOOL Connect(const char* pszServerAddr, int nServerPort,
- const char* pszDBName, const char* pszUserID, const char* pszPassword);
-
- ///???????????????
- BOOL Connect();
-
- ///????
- void Close();
-
- ///?????
- BOOL IsConnected();
-
- ///???????????MYSQL??
- char* EscapeString(const char* pszSrc, int nSize, char* pszDest)
- {
- if (m_myConnection)
- {
- _mysql_real_escape_string(m_myConnection, pszDest, pszSrc, nSize);
- return pszDest;
- }
- else
- return NULL;
- }
-
- ///????????UPDATE?DELETE?INSERT????(??)???
- unsigned int GetAffectedRows() { return (unsigned int)_mysql_affected_rows(m_myConnection); }
-
- ///???????????MYSQL??
- char* EscapeString(const char* pszSrc, char* pszDest)
- {
- return EscapeString(pszSrc, (int)strlen(pszSrc), pszDest);
- }
-
- ///???????????MYSQL?????????2????
- size_t EscapeStringEx(const char* pszSrc, int nSize, char* pszDest)
- {
- if (m_myConnection)
- {
- return _mysql_real_escape_string(m_myConnection, pszDest, pszSrc, nSize);
- }
- else
- {
- return NULL;
- }
- }
-
- ///?????SQL??????????????
- int ExecuteEx(const char* pszSQL, CMySQLRecordSet& rcdSet);
- ///?????SQL??????????????(?????????)
- int ExecuteEx(const char* pszSQL, int nLength,CMySQLRecordSet& rcdSet);
-
- ///????SQL?????????
- BOOL Execute(const char* pszSQL);
-
- ///????SQL????????
- BOOL Execute(const char* pszSQL, CMySQLRecordSet& rcdSet);
-
- ///????????
- DWORD GetLastError()
- {
- if(m_myConnection!=NULL)
- {
- return (DWORD)_mysql_errno(m_myConnection);
- }
- return 0;
- }
-
- ///?????????
- const char* GetLastErrorInfo()
- {
- if(m_myConnection!=NULL)
- {
- return _mysql_error(m_myConnection);
- }
- return NULL;
- }
-
- private:
-
- char m_szServerAddr[24];
- char m_szDBName[24];
- char m_szUserID[24];
- char m_szPassword[24];
-
- int m_nServerPort;
- MYSQL* m_myConnection;
- BOOL m_bConnected;
- };
- };
- };