mysql常用函数封装_mysql的常用操作的封装

1、概述:

为了把繁琐的操作简化成简单的类,设计了2个类用来封装了mysql的常用操作,以便使用者可以方便地使用。

2、组成

1)数据库操作类CDatabaseConnect

2)SQL对象类CSqlStatement

3、类的头文件代码

#include

#include "mysql.h"

#include

using namespace std;

//MYSQL的返回码类型

#define MYSQL_OK

0

#define MYSQL_FALSE

!(MYSQL_OK)

#define MYSQL_ERROR

1

//SQL的SQL语句类型

#define MYSQL_SQL_TYPE_INSERT

0

#define MYSQL_SQL_TYPE_QUERY

1

//字符串的大小

#define MYSQL_CHAR_SIZE

0xFF+1

#define MYSQL_STRING_SIZE

0xFF+1

#define MYSQL_VARCHAR_SIZE

0xFFFF+1

#define MYSQL_VAR_STRING_SIZE

0xFFFF+1

#define MYSQL_MEDIUMBLOB_SIZE

0xFFFFFF+1

#define MYSQL_LONGBLOB_SIZE

0xFFFFFFFF+1

//日志入口函数指针

typedef void(*PAddLogFunc)(const char *pszData);

//数据库连接参数

typedef struct tagSTConnectParam

{

char szUser[64+1];

//用户名称

char szPasswd[64+1];

//用户密码

char szHost[64+1];

//主机名称

char szDbName[64+1];

//数据库名称

char *pszSocket;

//socket

unsigned int nPort;

//端口号

unsigned long ucClientFlag;

//客户端标识

}STConnectParam, *PSTConnectParam;

//SQL预处理对象

class CSqlStatement

{

public:

CSqlStatement();

CSqlStatement(MYSQL* pDb);

virtual ~CSqlStatement();

private:

friend class CDatabaseConnect;

CSqlStatement(MYSQL* pDb, const char *pszSqlStatement);

public:

//行数

int GetRowCount(void);

//列数

int GetColumnCount(void);

//nPosIndex started by zero

//列名称

const char *GetColumnName(int nPosIndex);

//列ID

int GetColumnIndex(const char *pszColumnName);

//获取整型

int GetColumnValueInt(int nPosIndex);

//获取短字符串

const char *GetColumnValueVarChar(int nPosIndex);

//获取长字符串

const char *GetColumnValueString(int nPosIndex);

//获取字符串

const char *GetColumnValueBlob(int nPosIndex, int *pnLen);

//获取浮点型

double GetColumnValueDouble(int nPosIndex);

//绑定整型

bool BindInt(int nPosIndex, const int &nValue);

//绑定短字符串

bool BindChar(int nPosIndex, const char *pszValue);

//绑定长字符串

bool BindString(int nPosIndex, const char *pszValue);

//绑定字符串

bool BindBlob(int nPosIndex, const char *pszValue, int nBlobBytes);

//获取浮点型

bool BindDouble(int nPosIndex, const double &fValue);

//运行

bool Execute(void);

//下一行

bool NextRow(void);

//复位

bool Reset(void);

//写日志

int WriteDbLog(const char *pszMsg);

//设置SQL预处理对象

int SetSqlStatement(const char *pszSqlStatement);

private:

//初始化数据

bool InitData(void);

//释放数据

void FreeData(void);

private:

//日志函数接口

PAddLogFunc pAddLog;

MYSQL_STMT *m_pStmt;

MYSQL* m_pDb;

MYSQL_RES *m_pPrepareMetaResult;

MYSQL_BIND *m_pBind;

unsigned long *m_plStringLen;

my_bool *m_pbArray;

int *m_pnDataArray;

double *m_pfDataArray;

char **m_pszDataArray;

string m_strSql;

string m_strErrMsg;

int m_nRowCount;

int m_nColumnCount;

int m_nSqlType;

int m_nBindParamFlag;

};

typedef CSqlStatement *PCSqlStatement;

//数据库连接

class CDatabaseConnect

{

public:

CDatabaseConnect();

virtual ~CDatabaseConnect();

//打开

bool Open(PSTConnectParam pstParam);

//关闭

bool Close(void);

//获取MySQL对象指针

MYSQL *GetMySQL(void);

//获取指定表名称的记录个数

int  GetTableRecordCount(const char *pszTabelName);

//写日志

int WriteDbLog(const char *pszMsg);

//运行SQL语句

bool DirectStatement(const char *pszSqlStatement);

//产生SQL预处理对象

CSqlStatement* SetSqlStatement(const char *pszSqlStatement);

//释放SQL对象

void ReleaseStatement(void);

//获取指定SQL语句的查询记录个数

int GetRecordCount(const char *szSql);

//事务

bool BeginTransaction(void);

bool CommitTransaction(void);

bool RollbackTransaction(void);

public:

MYSQL * m_pDb;

private:

PAddLogFunc pAddLog;

CSqlStatement *m_pSqlStatement;

string m_strDbName;

string m_strSql;

string m_strErrMsg;

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值