亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? bbdblib.h

?? 這個源碼封裝了ADO連接數(shù)據(jù)庫
?? H
字號:

#ifndef _BBADOCONNECT_H
#define _BBADOCONNECT_H

//
// ADO訪問數(shù)據(jù)庫類
// 軟件環(huán)境:需要MSADO15.DLL
// 作者:鄧振波
// 2001.4.20
// Email:bozi@china.com
// 說明:封裝了ADO使用的操作函數(shù)和ADO訪問數(shù)據(jù)庫錯誤處理
//		使在VC上方便的使用ADO訪問數(shù)據(jù)庫
// 包括:ADO連接數(shù)據(jù)庫、打開記錄集、執(zhí)行SQL、以及
//		事務(wù)處理、ADO記錄集內(nèi)容轉(zhuǎn)換成C++的常用數(shù)據(jù)類型(CString、char,long,float等)
//
// 使用:1。定義一個CBBAdoConnection實例:CBBAdoConnection m_adoConn;
//		2。建立連接:m_adoConn.Open(strConnstring);
//					如果需要無條件重新連接的可以,參數(shù)bRepen設(shè)成TREU
//		3。打開記錄集:
//
//			_RecordsetPtr* prsThis=NULL;
//			prsThis=new _RecordsetPtr;
//			CString strSQL;
//			strSQL="select * from Table_Name";//		
//			//如果記錄集打開失敗
//			if(!(m_adoConn.OpenRecordset(strSQL,prsThis)))
//				return FALSE;
//		4。建立記錄集值對象
//			注意需要用參數(shù)構(gòu)造
//			CBBRstValues rsv(m_adoConn,prsThis);
//		
//		5。獲得的字段的值
//			rsv.GetValueLong(&m_nDeptID,1L);//獲得第一個字段的值
//			rsv.GetValueStr(m_strName,"ID");//獲得第一個字段名為ID的值
//			其它的同理.如果需要獲得SQL	Server中nText類型的字段值請用
//			GetValText(CString &strText, CString &strFieldName)函數(shù)
//		6。記錄集的記錄移動	(*prsThis)->MoveNext()等類似函數(shù)
//		7。記錄集不用時候需要釋放其資源
//			1)關(guān)閉記錄集
//			2)刪除記錄集指針
//			e.g.	(*prsThis)->Close();
//					delete prsThis;
//					prsThis=NULL;
//			否則會造成內(nèi)存泄漏
//		
//		注:
//			1。程序必須要初始化COM環(huán)境,請在應(yīng)用類中加入AfxInitOle函數(shù)初始化環(huán)境,否則ADO的調(diào)用將失敗
//			2。如果需要調(diào)用存儲過程SQL語句改為“Exec ” + 存儲過程名即可,與執(zhí)行SQL同樣
//
//        
//
//
// 

// msado15.dll必須放在本文件所在目錄,或者自己指定下面的msado15.dll全路徑
#if !defined(__AFXADO_H)
#import "msado15.dll" no_namespace rename ("EOF", "adoEOF") \
		rename ("LockTypeEnum", "adoLockTypeEnum") \
		rename ("DataTypeEnum", "adoDataTypeEnum") \
		rename ("FieldAttributeEnum", "adoFieldAttributeEnum") \
		rename ("EditModeEnum", "adoEditModeEnum") \
		rename ("RecordStatusEnum", "adoRecordStatusEnum") \
		rename ("ParameterDirectionEnum", "adoParameterDirectionEnum")
#endif //#if !defined(__AFXADO_H)



#ifndef _AFXEXT
	#pragma warning (disable : 4201)
	#pragma comment(lib,"../lib/BBDBlib.lib")	
	#pragma message("\t程序自動連接.../lib/BBDBlib.lib的庫,\n\t請檢查是否存在文件。")
	#pragma warning (default : 4201)
#endif



class AFX_EXT_CLASS CBBAdoConnection  
{
public:
	CBBAdoConnection();
	virtual ~CBBAdoConnection();
public:
	int SetConnTimeOut(long lTimeOut);// 設(shè)置連接超時
	int SetCommTimeOut(long lTimeOut);// 設(shè)置命令執(zhí)行超時

	BOOL IsConnectClose();// 判斷連接是否已經(jīng)打開

	int ExecuteSQL(LPCSTR szSQL);// 簡單執(zhí)行SQL語句,不返回記錄集
	// 打開數(shù)據(jù)庫記錄集
	// 參數(shù):
	//		strSQL		記錄集的SQL語句
	//		rs			返回的記錄集_RecordsetPtr對象	
	//		sConnString	數(shù)據(jù)庫的連接字符串
	//					如果使用數(shù)據(jù)庫連接已經(jīng)打開,參數(shù)沒用
	//					如果數(shù)據(jù)庫的連接沒有打開,當給予一個連接字符串,將先打開數(shù)據(jù)庫連接
	BOOL OpenRecordset(CString strSQL, _RecordsetPtr *rs,CString sConnString="");//打開數(shù)據(jù)庫記錄集	
	BOOL OpenRecordset(const char *sSQL,_RecordsetPtr* rs,char* sConnString=NULL);

	// 打開數(shù)據(jù)庫連接
	// 參數(shù):
	//		strConnString	連接字符串
	//		sConnString		連接字符串
	//		bReOpen			是否重新打開,如果為FALSE,,
	//						將先判斷數(shù)據(jù)庫是否打開如果沒有打開則打開,
	//						如果已經(jīng)打開,將不執(zhí)行任何操作
	//						如果為TRUE,則無條件重新打開。
	BOOL OpenConnection(CString strConnString ,BOOL bReOpen=FALSE);	
	BOOL OpenConnection(char* sConnString,BOOL bReOpen=FALSE);

	void CloseConnect();// 關(guān)閉數(shù)據(jù)庫連接	

	BOOL ExecuteTrans(CStringArray arrStrSQL);// 開始事務(wù)處理,不返回任何記錄集,參數(shù)為事務(wù)SQL數(shù)組


	_ConnectionPtr* GetConnection();// 得到_ConnectionPtr指針
	CString GetConnString();// 得到連接字符串	
private:
	enum ERRORFrom	{	
					ErrFormOpenConnsction,
					ErrFromOpenRecordset,
					ErrFormCloseConnection,
					ErrFormTanslation
					};
	_ConnectionPtr* m_pConn;
	char m_szConnString[512];
	///
protected:
	void ReportError(int nERRORfrom);
};


class AFX_EXT_CLASS CBBRstValues  
{	
public:
	// 三種構(gòu)造類的方法
	// 如果無參數(shù)構(gòu)造,請構(gòu)造后調(diào)用InitConnectAndRst方法
	// 其他的兩種構(gòu)造則不需調(diào)用InitConnectAndRst方法	
	CBBRstValues();
	CBBRstValues(_ConnectionPtr* pConn,_RecordsetPtr* pRs);
	CBBRstValues(CBBAdoConnection* pBBadoConn,_RecordsetPtr* pRs);

	virtual ~CBBRstValues();
public:
	// 初始化連接隊象和記錄集對象
	void InitConnectAndRst(_ConnectionPtr* pConn,_RecordsetPtr* pRs);
	void InitConnectAndRst(CBBAdoConnection* pBBAdoConn, _RecordsetPtr * pRs);

	// GetValText函數(shù)
	// 得到數(shù)據(jù)庫nText字段的值
	// 參數(shù):
	//		strText			用來接收返回值(字段值)
	//		strFieldName	字段名,該字段數(shù)據(jù)類型必須是nText類型
	BOOL GetValText(CString& strText,CString& strFieldName);//得到數(shù)據(jù)庫nText字段的值
	
	// GetValueStr函數(shù)
	// 得到數(shù)字型,日期型和字符型字段值函數(shù)
	// 參數(shù):
	//		cVal			用來接收返回值(字段值)的字符串指針,要求要開辟足夠的內(nèi)存單元
	//						或者足夠容納字段內(nèi)容的字符數(shù)組。
	//		vIndex			數(shù)據(jù)庫字段的名字或者索引,變體型,一般不直接用這個參數(shù),
	//						應(yīng)該用同形式的多態(tài)函數(shù)的參數(shù)調(diào)用
	//						數(shù)據(jù)庫字段的數(shù)據(jù)類型可以是數(shù)字型,日期型和字符型
	//		nFieldLen		需要返回的數(shù)據(jù)的字符串的長度,如果為-1,則返回整個字段值
	//		lpszFieldName	字段名,數(shù)據(jù)庫字段的數(shù)據(jù)類型可以是數(shù)字型,日期型和字符型
	//		nFieldIndex		在SQL語句中字段的索引序號數(shù)據(jù)庫字段的數(shù)據(jù)類型可以是數(shù)字型,日期型和字符型

	// GetValueLong函數(shù)
	// 得到數(shù)字型,日期型和字符型字段值函數(shù)
	// 參數(shù):
	//		lVal			用來接收返回值(字段值)
	//		vIndex			數(shù)據(jù)庫字段的名字或者索引,變體型,一般不直接用這個參數(shù),
	//						應(yīng)該用同形式的多態(tài)函數(shù)的參數(shù)調(diào)用
	//						數(shù)據(jù)庫字段的數(shù)據(jù)類型要求是數(shù)字型(int,long)	
	//		lpszFieldName	字段名,數(shù)據(jù)庫字段的數(shù)據(jù)類型可以是數(shù)字型,日期型和字符型
	//		nFieldIndex		在SQL語句中字段的索引序號數(shù)據(jù)庫字段的數(shù)據(jù)類型可以是數(shù)字型,日期型和字符型

	// GetValueFlaot函數(shù)
	// 得到數(shù)字型,日期型和字符型字段值函數(shù)
	// 參數(shù):
	//		fVal			用來接收返回值(字段值)
	//		vIndex			數(shù)據(jù)庫字段的名字或者索引,變體型,一般不直接用這個參數(shù),
	//						應(yīng)該用同形式的多態(tài)函數(shù)的參數(shù)調(diào)用
	//						數(shù)據(jù)庫字段的數(shù)據(jù)類型要求是字型(int,long,float,貨幣型等)	
	//		lpszFieldName	字段名,數(shù)據(jù)庫字段的數(shù)據(jù)類型可以是數(shù)字型,日期型和字符型
	//		nFieldIndex		在SQL語句中字段的索引序號數(shù)據(jù)庫字段的數(shù)據(jù)類型可以是數(shù)字型,日期型和字符型

	BOOL GetValueStr(char* cVal,_variant_t &vIndex,int nFieldLen=-1);
	BOOL GetValueLong(long* lVal,_variant_t &vIndex);
	BOOL GetValueFloat(float* fVal,_variant_t &vIndex);

	BOOL GetValueStr(char* cVal,long lIndex,int nFieldLen=-1);
	BOOL GetValueLong(long* lVal,long lIndex);
	BOOL GetValueFloat(float* fVal,long lIndex);

	BOOL GetValueStr(char* cVal,CString strIndex,int nFieldLen=-1);
	GetValueLong(long *lVal, LPCSTR lpszIndex);
	BOOL GetValueFloat(float* fVal,CString strIndex);

	BOOL GetValueStr(CString& str,LPCSTR lpszFieldName,int nFieldLen=-1);
	BOOL GetValueStr(CString& str,UINT nFieldIndex,int nFieldLen=-1);
	BOOL GetValueStr(CString& str,_variant_t &vIndex,int nFieldLen=-1);

	// 判斷值是否有效,是否為NULL
	BOOL VerifyVTData(_variant_t& value);
	BOOL VerifyVTData(char* pData);	
protected:	
	_RecordsetPtr*	m_prsThis;
	_ConnectionPtr* m_pConn;
	void ReportError();

};

#endif // _BBADOCONNECT_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女高潮久久久| 亚洲女同一区二区| 欧美老年两性高潮| 一本色道久久综合亚洲91 | youjizz国产精品| 粉嫩在线一区二区三区视频| 国产成人在线免费观看| 国产成人免费视| 成人免费毛片aaaaa**| 99久久国产综合精品色伊| 成+人+亚洲+综合天堂| 色婷婷综合中文久久一本| 欧美综合亚洲图片综合区| 精品视频123区在线观看| 欧美一区二区在线免费播放| 精品三级在线看| 国产精品视频一二三| 亚洲欧洲性图库| 亚洲自拍另类综合| 美女一区二区久久| 岛国精品一区二区| 欧美综合欧美视频| 精品国偷自产国产一区| 国产精品每日更新在线播放网址| 综合分类小说区另类春色亚洲小说欧美 | av成人动漫在线观看| 欧美视频一区在线| 欧美v亚洲v综合ⅴ国产v| 久久亚洲精品国产精品紫薇| 亚洲欧美国产毛片在线| 日韩成人dvd| 波多野结衣在线一区| 欧美三级在线视频| 久久精品在这里| 亚洲一二三四在线| 国产麻豆成人精品| 欧美视频在线观看一区二区| 国产调教视频一区| 日韩电影在线观看网站| 不卡的av中国片| 欧美电影免费观看高清完整版在线观看 | 日产欧产美韩系列久久99| 国产乱妇无码大片在线观看| 欧美性猛交xxxx乱大交退制版| 欧美va亚洲va香蕉在线| 一区二区三区精品视频在线| 激情久久五月天| 欧美日韩在线播放三区| 亚洲少妇30p| 韩国一区二区在线观看| 制服.丝袜.亚洲.中文.综合| 亚洲欧洲精品一区二区三区不卡| 久久超碰97中文字幕| 欧美三区在线视频| 亚洲精品写真福利| 国产伦精品一区二区三区免费| 欧美男人的天堂一二区| 一区二区久久久久| 91免费看视频| 国产精品日日摸夜夜摸av| 韩国理伦片一区二区三区在线播放| 欧美午夜电影网| 一区二区三区成人| 99久久综合狠狠综合久久| 久久久久久免费网| 国内偷窥港台综合视频在线播放| 欧美日本一道本| 亚洲国产va精品久久久不卡综合| 91免费观看国产| 亚洲欧美另类久久久精品2019| 成人黄色一级视频| 国产精品久久久久毛片软件| 国产福利一区在线| 欧美国产欧美综合| 成人午夜短视频| 国产日产亚洲精品系列| 国产成人精品影视| 国产午夜亚洲精品不卡| 成人午夜碰碰视频| 亚洲色图欧美激情| 色婷婷激情久久| 午夜免费久久看| 欧美精品一级二级| 麻豆精品国产91久久久久久| 欧美不卡123| 国产99久久久久| 国产精品电影一区二区| 色婷婷久久久久swag精品| 亚洲自拍偷拍图区| 日韩一区二区在线观看| 国产精品综合av一区二区国产馆| 国产欧美一区视频| 日本久久一区二区| 麻豆精品新av中文字幕| 久久女同精品一区二区| 99精品视频免费在线观看| 亚洲精品中文在线| 日韩你懂的电影在线观看| 懂色一区二区三区免费观看| 夜夜操天天操亚洲| 精品免费一区二区三区| 不卡av在线免费观看| 婷婷国产v国产偷v亚洲高清| 精品国产一区二区三区久久久蜜月| 国产**成人网毛片九色 | 亚洲国产精品久久久久婷婷884| 欧美日韩高清在线| 国产高清成人在线| 亚洲国产裸拍裸体视频在线观看乱了| 日韩一区二区视频在线观看| 成人精品免费视频| 日韩精品一区第一页| 国产精品天干天干在线综合| 欧美日韩三级在线| 国产aⅴ综合色| 男女男精品视频网| 成人欧美一区二区三区黑人麻豆 | av中文字幕在线不卡| 日韩成人一级片| 中文字幕日本乱码精品影院| 欧美一区二区在线看| 91丨九色丨国产丨porny| 精品在线免费视频| 亚洲国产另类精品专区| 国产精品久久久久桃色tv| 日韩女优视频免费观看| 欧美怡红院视频| 9l国产精品久久久久麻豆| 久久福利视频一区二区| 亚洲图片一区二区| 成人免费在线视频观看| 久久久久久久久伊人| 欧美精品亚洲一区二区在线播放| 91香蕉视频污在线| 成人午夜碰碰视频| 国产成人精品网址| 麻豆久久一区二区| 日韩国产欧美一区二区三区| 亚洲精品国产第一综合99久久| 国产视频一区二区在线观看| 日韩欧美久久久| 欧美一区二区久久久| 在线观看亚洲精品视频| 一本大道久久a久久综合| 国产成人午夜精品影院观看视频| 美国十次了思思久久精品导航| 亚洲成av人片一区二区梦乃| 亚洲一线二线三线久久久| 亚洲乱码精品一二三四区日韩在线 | 6080午夜不卡| 91精品国产综合久久久蜜臀图片| 欧美男生操女生| 欧美一区二区三区在线视频| 91精品国产91久久综合桃花| 欧美影院一区二区三区| 欧美三级资源在线| 9191久久久久久久久久久| 宅男在线国产精品| 日韩欧美一区电影| 精品精品国产高清a毛片牛牛| 精品国产亚洲一区二区三区在线观看| 日韩视频一区二区在线观看| 精品少妇一区二区三区在线视频| 精品久久久久久亚洲综合网| 2023国产精品视频| 中文字幕免费不卡| 一区二区三区欧美| 亚洲成人午夜电影| 精品一区二区三区av| 国产成人鲁色资源国产91色综 | 久久国产综合精品| 久久99国产精品久久| 国产精品123| 色综合咪咪久久| 欧美一区二区在线播放| 久久久久久久综合狠狠综合| 一色桃子久久精品亚洲| 亚洲综合色在线| 美女尤物国产一区| 丰满岳乱妇一区二区三区| 在线观看不卡视频| 精品国产3级a| 亚洲影视在线观看| 久久机这里只有精品| 色综合天天综合| 日韩欧美国产小视频| 国产精品久久久久久久第一福利 | 国产欧美一区在线| 亚洲午夜免费电影| 国产一区二区毛片| 在线欧美日韩国产| 国产午夜亚洲精品理论片色戒| 亚洲已满18点击进入久久| 国内精品久久久久影院色| 欧美在线免费观看亚洲| 国产日产欧产精品推荐色 | 中文字幕精品三区| 五月激情六月综合| 北岛玲一区二区三区四区| 日韩一区二区在线看|