174 lines
3.1 KiB
C
174 lines
3.1 KiB
C
|
|
#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
|