db_operator.h
来自「特别好玩有启发的东西」· C头文件 代码 · 共 155 行
H
155 行
/****************************************************************Copyright (c) 金瀚海网络科技有限公司 All rights reserved*文件名称: db_operator.h*模 块 名: 数据库操作类头文件*功能描述: 数据库操作接口定义*当前版本: 1.0*作 者: *完成日期: 2007-08-19*修改记录: * 日期 版本 作者 修改描述********************************************************************************************************************************//*注意事项:sql语句最后不可加分号,否则会引起异常错误使用实例:*/#ifndef DB_OPERATOR_H#define DB_OPERATOR_H#include <stdio.h>#include <assert.h>#include <vector>#include <string>#include <arpa/inet.h> //linu下使用#include <mysql/mysql.h> //linux下使用//#include <winsock2.h>//#include <mysql.h>#include "singleton.h"using namespace std;struct DataBase_Param{ char *szHost; //主机名(ip地址) char *szUserName; //用户名 char *szPassWord; //密码 char *szDataBaseName; //使用的数据库名 unsigned short port; //使用的端口 const char *unix_socket; unsigned int client_flag; DataBase_Param(const char *szDBIP,const unsigned short uPort,const char *szUser, const char *szPasswd,const char *szDBName) { assert(szHost = new char[20]); memset(szHost,0,sizeof(szHost)); strcpy(szHost,szDBIP); assert(szUserName = new char[20]); memset(szUserName,0,sizeof(szUserName)); strcpy(szUserName,szUser); assert(szPassWord = new char[20]); memset(szPassWord,0,sizeof(szPassWord)); strcpy(szPassWord,szPasswd); assert(szDataBaseName = new char[20]); memset(szDataBaseName,0,sizeof(szDataBaseName)); strcpy(szDataBaseName,szDBName); port = uPort; unix_socket = NULL; client_flag = 0; } ~DataBase_Param() { delete [] szHost; delete [] szUserName; delete [] szPassWord; delete [] szDataBaseName; } };class CDB_Operator:public Singleton<CDB_Operator>{ private: MYSQL m_hMySql; //数据库连接句柄 DataBase_Param *m_DBParam; //数据库连接参数 bool m_bIsOpen; //数据库打开标志 MYSQL_RES *m_result; //sql语句操作结果集 MYSQL_ROW m_row; //记录 int m_curLine; //当前行号 int m_totleLine; //总的行数 void Trim(const char *strSrc,char *strDst); //清除字符串左边的空格 void ToUpper(char *str); //将字符串转换成大写 public: CDB_Operator(); ~CDB_Operator(); bool init(const char *szDBIP,const unsigned short uPort,const char *szUserName, const char *szPasswd,const char *szDBName); //初始化数据库连接 bool connectDB(); //连接数据库 bool re_connectDB(); //重连数据库 bool exec_sql(const char* pszSQL); //执行sql语句 /*取数据库操作结果值*/ int get_line_value(); //结果集中记录条数 //__int64 get_last_insert_id(); long long get_last_insert_id(); bool GetMultiFieldValue(vector<int> & FieldList, vector<string> & ValueList); //获取指定的字段值,根据给出的列号(取当前行) bool GetMutliFieldValueByName(vector<string> & FieldList,vector<string> & ValueList); //获取指定的字段值,根据给出的列名(取当前行) char **GetAllFieldValue(); //获取当前行所有字段的值 bool get_value(const int row,const char *pszColName,char *pszVal); //根据行号,列名pszColName为的数据 bool get_value(const int row,const int col,char *pszVal); //根据行号,列号的数据 bool get_curValue(const int col,char *pszVal); //当前行,列号为col的数据 bool get_curValue(const char *pszColName,char *pszVal); //当前行,列名为pszColName的数据 bool IsEmpty(); /*结果集中指针移动*/ bool MoveBegin(); bool MoveNext(); bool MovePre(); bool MoveLast(); bool MoveToLine(int line); //当前记录是否为最后一条记录 bool IsLast(); /*释放结果集占用的内存*/ void free_Result(); bool closeDB(); int get_last_error(); //最后一条数据库操作出错代码 const char *get_last_error_desc(); //最后一条数据库操作出错的描述 };#endif //DB_OPERATOR_H
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?