亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

數據庫MySql類庫系列(四)-QueryOperatorSelect

2019-11-06 06:32:08
字體:
來源:轉載
供稿:網友

第四個工具類,QueryOperatorSelect

負責處理:直接執行sql方式下的,查找,以及獲取查找結果的需求。

用到了之前的DBOperator,主要是封裝其ExecQuery接口。

另外提供獲取查詢結果的相應接口:

從結果集中取出一行數據:FetchResult。

取出一行數據之后,在這一行數據中,取每個字段的值:GetColumn。(由于本人的業務需要,目前僅提供支持7種數據類型:int,unsigned int,long long,unsigned long long,float,字符串,Blob)。

每一行數據都處理完之后,釋放結果集:FreeResult。(如果不釋放,在下次執行查詢之前,會強制釋放,對象析構時,會強制釋放)。

QueryOperatorSelect.h

#ifndef __QueryOperatorSelect_H__#define	__QueryOperatorSelect_H__struct st_MySQL;typedef struct st_mysql MYSQL;struct st_mysql_res;typedef struct st_mysql_res MYSQL_RES;typedef char** MYSQL_ROW;namespace common{	namespace db{		class QueryOperatorSelect		{		public:			QueryOperatorSelect();			~QueryOperatorSelect();			void Release();			// 執行sql			bool DoOperator(MYSQL *connect, const char *sql);			// 獲取一條結果			bool FetchResult();						// 獲取一條結果一列的值			bool GetColumn(int& value, unsigned int index);			bool GetColumn(unsigned int& value, unsigned int index);			bool GetColumn(long long& value, unsigned int index);			bool GetColumn(unsigned long long& value, unsigned int index);			bool GetColumn(float& value, unsigned int index);			bool GetColumn(void* value, unsigned int index);			// 釋放結果			bool FreeResult();		PRivate:			MYSQL_RES *m_Data;				// 結果集數據			unsigned int m_FieldCount;		// 結果集列數			MYSQL_ROW m_Columns;			// 數據每一列的值			unsigned long *m_ColumnLens;	// 數據每一列的長度		};	}}#endifQueryOperatorSelect.cpp

#include "QueryOperatorSelect.h"#ifdef WIN32#include <winsock2.h>#endif#include <stdio.h>#include <mysql.h>#include <string.h>#include <stdarg.h>#include "DBOperator.h"namespace common{	namespace db{		QueryOperatorSelect::QueryOperatorSelect()		{			m_Data = NULL;			m_FieldCount = 0;			m_Columns = NULL;			m_ColumnLens = NULL;		}		QueryOperatorSelect::~QueryOperatorSelect()		{			Release();		}		void QueryOperatorSelect::Release()		{			if (NULL != m_Data)			{				DBOperator::FreeResult(m_Data);				m_Data = NULL;			}			if (NULL != m_Columns)			{				m_Columns = NULL;			}		}		bool QueryOperatorSelect::DoOperator(MYSQL *connect, const char *sql)		{			if (NULL != connect && NULL != sql)			{				if (NULL != m_Data)				{					DBOperator::FreeResult(m_Data);					m_Data = NULL;				}				if (DBOperator::ExecQuery(connect, sql))				{					m_Data = DBOperator::SelectResult(connect);					if (NULL != m_Data)					{						m_FieldCount = DBOperator::GetResultFields(m_Data);						return true;					}					else					{						m_FieldCount = 0;						return false;					}				}				else				{					return false;				}			}			else			{				return false;			}		}		bool QueryOperatorSelect::FetchResult()		{			if (NULL != m_Data)			{				m_Columns = DBOperator::GetNextResult(m_Data);				m_ColumnLens = DBOperator::GetResultLens(m_Data);				if (NULL != m_Columns && NULL != m_ColumnLens)				{					return true;				}				else				{					DBOperator::FreeResult(m_Data);					m_Data = NULL;					m_ColumnLens = NULL;					return false;				}			}			else			{				return false;			}		}		bool QueryOperatorSelect::GetColumn(int& value, unsigned int index)		{			if (NULL != m_Columns && index < m_FieldCount)			{				sscanf(m_Columns[index], "%d", &value);				return true;			}			else			{				return false;			}		}		bool QueryOperatorSelect::GetColumn(unsigned int& value, unsigned int index)		{			if (NULL != m_Columns && index < m_FieldCount)			{				sscanf(m_Columns[index], "%u", &value);				return true;			}			else			{				return false;			}		}		bool QueryOperatorSelect::GetColumn(long long& value, unsigned int index)		{			if (NULL != m_Columns && index < m_FieldCount)			{				sscanf(m_Columns[index], "%lld", &value);				return true;			}			else			{				return false;			}		}		bool QueryOperatorSelect::GetColumn(unsigned long long& value, unsigned int index)		{			if (NULL != m_Columns && index < m_FieldCount)			{				sscanf(m_Columns[index], "%llu", &value);				return true;			}			else			{				return false;			}		}		bool QueryOperatorSelect::GetColumn(float& value, unsigned int index)		{			if (NULL != m_Columns && index < m_FieldCount)			{				sscanf(m_Columns[index], "%f", &value);				return true;			}			else			{				return false;			}		}		bool QueryOperatorSelect::GetColumn(void* value, unsigned int index)		{			if (NULL != m_Columns && NULL != m_ColumnLens && index < m_FieldCount)			{				memcpy(value, m_Columns[index], m_ColumnLens[index]);				return true;			}			else			{				return false;			}		}		bool QueryOperatorSelect::FreeResult()		{			if (NULL != m_Data)			{				DBOperator::FreeResult(m_Data);				m_Data = NULL;				return true;			}			else			{				return false;			}		}	}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91在线视频导航| 91av在线看| 欧美日韩国产一区在线| 久久久精品久久久久| 日韩av毛片网| 亚洲成人久久久久| 最近2019中文字幕在线高清| 狠狠色狠狠色综合日日五| 日本中文字幕不卡免费| 国产精品普通话| 亚洲自拍偷拍视频| 亚洲人成网7777777国产| 日韩精品中文字| 欧美视频中文在线看| 8x海外华人永久免费日韩内陆视频| 日韩亚洲精品电影| 欧美中文字幕在线视频| 九九视频直播综合网| 亚洲成人亚洲激情| 亚洲精品美女久久久| 成人黄色片在线| 亚洲精品第一国产综合精品| 5566日本婷婷色中文字幕97| 亚洲自拍偷拍区| 777国产偷窥盗摄精品视频| 精品人伦一区二区三区蜜桃免费| 欧美性生交xxxxxdddd| 精品无人国产偷自产在线| 91在线免费看网站| 色狠狠av一区二区三区香蕉蜜桃| 成人免费淫片视频软件| 亚洲精品在线91| 深夜精品寂寞黄网站在线观看| 77777少妇光屁股久久一区| 亚洲视频专区在线| 成人激情视频免费在线| 午夜欧美不卡精品aaaaa| 国产精品27p| 亚洲成av人影院在线观看| 久久久国产一区| 亚洲国产成人精品电影| 日韩成人网免费视频| 久久综合久中文字幕青草| 自拍亚洲一区欧美另类| 亚洲视频视频在线| 97视频在线观看网址| 国产精品久久久久久久久久尿| 久久人人爽人人爽人人片av高清| 亚洲欧美激情另类校园| 国产一区在线播放| 国产日韩精品综合网站| 亚洲欧洲黄色网| 在线观看欧美日韩国产| 国产精品专区h在线观看| 日本中文字幕久久看| 国产成人精品综合久久久| 日韩精品一区二区视频| 永久免费精品影视网站| 欧美巨乳在线观看| 色爱精品视频一区| 国产欧美va欧美va香蕉在线| 色噜噜国产精品视频一区二区| 亚洲石原莉奈一区二区在线观看| 久久精品视频播放| 久久亚洲精品小早川怜子66| 疯狂蹂躏欧美一区二区精品| 51视频国产精品一区二区| 日韩视频免费大全中文字幕| 亚洲系列中文字幕| 国产69精品久久久久久| 欧美一级视频免费在线观看| 欧美激情亚洲综合一区| 国产日韩在线精品av| 亚洲免费电影在线观看| 国产亚洲欧美日韩一区二区| 国产精品一区二区三区久久久| 96国产粉嫩美女| 精品在线小视频| 亚洲精品乱码久久久久久金桔影视| 久久久久久久97| 亚洲精品永久免费精品| 2020欧美日韩在线视频| 精品亚洲一区二区三区| 国产精品第一视频| 97香蕉超级碰碰久久免费的优势| 精品亚洲国产成av人片传媒| 日韩精品极品在线观看| 午夜免费在线观看精品视频| 亚洲永久免费观看| 国产主播欧美精品| 国产精品入口日韩视频大尺度| 日韩在线国产精品| 91麻豆国产语对白在线观看| 一区二区欧美在线| 国产日本欧美一区| 欧美激情一级欧美精品| 欧美亚洲午夜视频在线观看| 欧美综合激情网| 中文精品99久久国产香蕉| 色老头一区二区三区| 在线看欧美日韩| 国产精品一区二区三区久久久| 91爱视频在线| 亚洲第一区在线| 久久人体大胆视频| 欧美成人精品xxx| 国产精品视频一区二区三区四| 一区二区三区在线播放欧美| 欧美激情aaaa| 久久久精品一区二区三区| 97国产精品视频| 亚洲视频欧洲视频| 亚洲国产精品成人精品| 亚洲天天在线日亚洲洲精| 日韩中文字幕在线看| 欧美日韩福利在线观看| 国产午夜精品理论片a级探花| 高清一区二区三区日本久| 久久九九热免费视频| 在线午夜精品自拍| 2019亚洲男人天堂| 欧美性xxxxhd| 成人精品一区二区三区| 91精品视频免费看| 国产中文欧美精品| 亚洲成人三级在线| 亚洲精品女av网站| 欧美第一淫aaasss性| 久久免费视频观看| 永久555www成人免费| 欧美性在线观看| 91夜夜未满十八勿入爽爽影院| 久久人人爽人人爽人人片av高清| 成人深夜直播免费观看| 欧美一区二粉嫩精品国产一线天| 国产精品自产拍在线观看中文| 日韩av电影在线免费播放| 精品视频偷偷看在线观看| 久久躁狠狠躁夜夜爽| 国产一区在线播放| 欧美精品久久久久a| 国产中文欧美精品| 国产在线播放91| 欧美亚洲成人xxx| 九九热这里只有在线精品视| 性欧美xxxx| 欧美激情视频在线观看| 欧美在线影院在线视频| 国产视频亚洲精品| 精品毛片三在线观看| 国产成人亚洲综合91| 91亚洲精品一区| 久久精品国产一区| 成人黄色网免费| 91丝袜美腿美女视频网站| 欧美巨乳在线观看| 日本欧美中文字幕| 91久久中文字幕| 午夜精品久久久久久99热软件| 国产精品中文在线| 97超碰蝌蚪网人人做人人爽| 26uuu久久噜噜噜噜| 日韩免费电影在线观看| 色午夜这里只有精品|