This commit is contained in:
aixianling
2025-01-09 17:45:40 +08:00
commit 5c9f1dae4a
3482 changed files with 1146531 additions and 0 deletions

View File

@@ -0,0 +1,173 @@
#ifndef _SQL_H_
#define _SQL_H_
#ifdef _MSC_VER
#undef bool //config-win.h<>л<EFBFBD><D0BB><EFBFBD>bool<6F><6C><EFBFBD><EFBFBD>ΪBOOL
#endif
#include "mysql.h"
//#include <windows.h>
#include "os_def.h"
#include "x_lock.h"
using namespace lock;
class SQLConnection
{
private:
static const int BUFF_SIZE = 4096 * 10;
private:
MYSQL MySql_;
MYSQL_RES* result_set_;
my_ulonglong row_num_;
MYSQL_ROW rows_;
MYSQL_FIELD* fields_;
my_ulonglong field_num_;
my_ulonglong affect_rows_;
private:
char host_[32];
int port_;
char user_name_[64];
char pw_[64];
char db_name_[64];
size_t flag_;
char buf_[BUFF_SIZE];
Mutex lock_; //SQL<51><4C>ѯ<EFBFBD><D1AF>
bool connected_; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ӵı<D3B5>־
bool mult_thread_; //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>̵߳ı<CCB5>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪTRUE<55><45><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD>ѯ<EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD>
size_t err_cnt_; // ִ<><D6B4>sql<71><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A3AC><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD>
bool infile_;
bool utf8_;
bool log_; // <20>Ƿ<EFBFBD><C7B7><EFBFBD>¼sql<71><6C><EFBFBD><EFBFBD>־
private:
void AfterQueryed(int nError, const char* sql);
void AfterExeced(int nError, const char* sql);
public:
SQLConnection();
~SQLConnection();
inline const char* GetHost()
{
return host_;
};
void SetHost(const char* sServerHost);
inline int GetPort()
{
return port_;
};
void SetPort(int nServerPort);
inline const char* GetDbName()
{
return db_name_;
};
void SetDbName(const char* sDataBaseName);
inline const char* GetUserName()
{
return user_name_;
};
void SetUserName(const char* sUserName);
inline const char* GetPassWord()
{
return pw_;
};
void SetPassWord(const char* sPassWord);
inline size_t GetConnectionFlags()
{
return flag_;
};
void SetConnectionFlags(const size_t nFlags);
inline bool IsMultiThread()
{
return mult_thread_;
};
void SetMultiThread(bool boMultiThread);
BOOL Connect();
inline BOOL Connected()
{
return connected_;
};
void Disconnect();
inline MYSQL* GetMySql()
{
return &MySql_;
}
//Query<72><79>RealQuery<72><79><EFBFBD><EFBFBD>ִ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD>IJ<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><>ѯ<EFBFBD>ɹ<EFBFBD><C9B9>򷵻<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>ResetQuery<72><79><EFBFBD>ͷŲ<CDB7>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯʧ<D1AF><CAA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int Query(const char* sQueryFormat, ...);
int RealQuery(const char* sQueryText, const size_t nTextLen);
//Exec<65><63>RealExec<65><63><EFBFBD><EFBFBD>ִ<EFBFBD>в<EFBFBD><D0B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><D8BD><EFBFBD><EFBFBD>IJ<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>delete,update,create,drop,alter<65><72>
//ִ<>гɹ<D0B3><C9B9>򷵻<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>ResetQuery<72><79><EFBFBD>ͷŲ<CDB7>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ʧ<EFBFBD><CAA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
int Exec(const char* sQueryFormat, ...);
int RealExec(const char* sExecText, const size_t nTextLen);
void ResetQuery();
int Ping()
{
return mysql_ping(&MySql_);
}
inline int GetFieldCount()
{
return (int)field_num_;
}
inline int GetRowCount()
{
return (int)row_num_;
}
inline int GetRowsAffected()
{
return (int)affect_rows_;
}
inline MYSQL_ROW CurrentRow()
{
return rows_;
}
inline MYSQL_ROW NextRow()
{
if (result_set_)
{
rows_ = mysql_fetch_row(result_set_);
return rows_;
}
return NULL;
}
inline unsigned long* GetFieldsLength()
{
return mysql_fetch_lengths(result_set_);
}
void ClearErrCnt()
{
err_cnt_ = 0;
}
size_t GetErrCnt()
{
return err_cnt_;
}
void SetInfileFlag(bool flag)
{
infile_ = flag;
}
void SetUtf8(bool flag)
{
utf8_ = flag;
}
void SetLog(bool flag)
{
log_ = flag;
}
};
#endif