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 + -
显示快捷键?