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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? adoconn.cpp

?? ADO訪問ACCESS數據庫(修改部分參數就可以訪問其他數據庫了)
?? CPP
字號:
// ADOConn.cpp: implementation of the ADOConn class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ADOConn.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////


ADOConn::ADOConn()
{
	OnInitADOConn();

}

ADOConn::~ADOConn()
{

}

// 初始化—連接數據庫
void  ADOConn::OnInitADOConn()
{
	// 初始化OLE/COM庫環境 
	::CoInitialize(NULL);
  
	try
	{
		// 創建Connection對象
		m_pConnection.CreateInstance("ADODB.Connection");
		TCHAR szFilePath[MAX_PATH + 1];
	GetModuleFileName(NULL, szFilePath, MAX_PATH);
	(_tcsrchr(szFilePath, _T('\\')))[1] = 0;//刪除文件名,只獲得路徑。
	CString dbpath= szFilePath;
		// 設置連接字符串,必須是BSTR型或者_bstr_t類型
		_bstr_t strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+dbpath+"data\\姚亞通訊錄.mdb";
			//SQL Server:strConnect ="Provider=SQLOLEDB;Server=HAPPY-MMNL94O2E\OPENSURF;Database=HR;uid=HAPPY-MMNL94O2E\Administrator;pwd=jj";
		m_pConnection->Open(strConnect,"","",adModeUnknown);
	}
	// 捕捉異常
	catch(_com_error e)
	{
		// 顯示錯誤信息
		AfxMessageBox(e.Description());
	}
}

// 執行查詢
_RecordsetPtr&  ADOConn::GetRecordSet(_bstr_t bstrSQL)
{

	try
	{
		// 連接數據庫,如果Connection對象為空,則重新連接數據庫
		if(m_pConnection==NULL)
			OnInitADOConn();
		// 創建記錄集對象
		m_pRecordset.CreateInstance(__uuidof(Recordset));
		// 取得表中的記錄
		m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
	}
	// 捕捉異常
	catch(_com_error e)
	{
		// 顯示錯誤信息
		AfxMessageBox(e.Description());
	}
	// 返回記錄集
	return m_pRecordset;
}

 // 執行SQL語句,Insert Update _variant_t
BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
//	_variant_t RecordsAffected;
	try
	{
		// 是否已經連接數據庫
		if(m_pConnection == NULL)
			OnInitADOConn();
		// Connection對象的Execute方法:(_bstr_t CommandText, 
		// VARIANT * RecordsAffected, long Options ) 
		// 其中CommandText是命令字串,通常是SQL命令。
		// 參數RecordsAffected是操作完成后所影響的行數, 
		// 參數Options表示CommandText的類型:adCmdText-文本命令;adCmdTable-表名
		// adCmdProc-存儲過程;adCmdUnknown-未知
		m_pConnection->Execute(bstrSQL,NULL,adCmdText);
		return true;
	}
	catch(_com_error e)
	{
		AfxMessageBox(e.Description());
		return false;
	}
}

void ADOConn::ExitConnect()
{
	// 關閉記錄集和連接
	if (m_pRecordset != NULL)
		m_pRecordset->Close();
	m_pConnection->Close();
	// 釋放環境
	::CoUninitialize();
}

File ADOConn::GetFile()
{
	File af;
	af.len=0;
	af.m_pBuffer=NULL;
		static char BASED_CODE szFilter[] = "BMP Files (*.bmp)|*.bmp|All Files (*.*)|*.*||";
	CFileDialog dlg(TRUE,"BMP",NULL,  OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);
	if(dlg.DoModal() != IDOK)
		return af;

	CString pathname = dlg.GetPathName();
     //從BMP文件中讀取的數據存放在此變量中
	
	//@@@@@@@@@@   讀取BMP文件到m_pBuffer   @@@@@@@@@@
	CFile file;  //定義文件對象
	if( !file.Open(pathname, CFile::modeRead)) //以只讀方式打開文件
	{
		AfxMessageBox("無法打開BMP文件");
		return af;
	}
	DWORD m_filelen;  //用于保存文件長度
	m_filelen = file.GetLength();  //讀取文件長度
	af.len=m_filelen;
	af.m_pBuffer = new char[m_filelen + 1]; //根據文件長度分配數組空間
	if(!af.m_pBuffer)  //如果不空間不足則返回
	{
		AfxMessageBox("無法分配足夠的內存空間");
		return af;
	}
	if(file.ReadHuge(af.m_pBuffer, m_filelen) != m_filelen)  //讀取BMP文件到m_pBuffer中
	{
		AfxMessageBox("讀取文件時出現錯誤");
		return af;
	}
	
	return af; 

}

void ADOConn::CharToData(File &af,CString sql,CString Name)
{
	//@@@@@@@@@@@  將圖像數據保存到數據庫中  @@@@@@@@@@@@@
	OnInitADOConn();
	//連接數據庫
	OnInitADOConn();
	//設置SELECT語句
	
	//執行SELETE語句
	_RecordsetPtr	m_pRs;
	
	m_pRs =GetRecordSet(_bstr_t(sql));	
  
	VARIANT			varBLOB;
	SAFEARRAY		*psa;  //定義數組
    SAFEARRAYBOUND	rgsabound[1];

	rgsabound[0].lLbound = 0;
	int flen=af.len;
    
	rgsabound[0].cElements =flen;
	
	psa = SafeArrayCreate(VT_UI1, 1, rgsabound);//創建數組
	for (long i = 0; i < (long)flen; i++)  //將m_pBuffer中的圖像數據寫入數組psa
		SafeArrayPutElement (psa, &i, af.m_pBuffer++);
	varBLOB.vt = VT_ARRAY | VT_UI1;
	varBLOB.parray = psa;
	//調用AppendChunk()函數將圖像數據寫入Photo字段
	m_pRs->GetFields()->GetItem((LPCSTR)Name)->AppendChunk(varBLOB);
	//更新數據庫
	m_pRs->Update();
	//斷開與數據庫的連接
	ExitConnect();

}

char* ADOConn::GetFileFromData(CString sql, CString name)
{
	
		//執行SELETE語句
		_RecordsetPtr	m_pRs;
		m_pRs =GetRecordSet(_bstr_t(sql));	

		//如果不存在此記錄,則將設置按鈕置灰并返回
		if(m_pRs->adoEOF || m_pRs->adoBOF)  
		{
			AfxMessageBox("不存在此記錄");
			return FALSE;
		}
		//讀取圖像字段的實際大小
		long lDataSize = m_pRs->GetFields()->GetItem((LPCSTR)name)->ActualSize;
		char *m_pBuffer;  //定義緩沖變量
		if(lDataSize > 0)
		{
			//從圖像字段中讀取數據到varBLOB中
			_variant_t varBLOB;
			varBLOB = m_pRs->GetFields()->GetItem((LPCSTR)name)->GetChunk(lDataSize);
			if(varBLOB.vt == (VT_ARRAY | VT_UI1))
			{
				if(m_pBuffer = new char[lDataSize+1])	//分配必要的存儲空間
				{	
					char *pBuf = NULL;
					SafeArrayAccessData(varBLOB.parray,(void **)&pBuf);
					memcpy(m_pBuffer,pBuf,lDataSize); ///復制數據到緩沖區m_pBuffer
					SafeArrayUnaccessData (varBLOB.parray);
					
				}
			}
		}
		
		return m_pBuffer;

}

HBITMAP ADOConn::CharToHbitmap(char* m_pBuffer,CWnd* pwnd)
{
	
	                LPSTR hDIB;
					LPVOID lpDIBBits;
					HBITMAP m_hBitmap;
					BITMAPFILEHEADER bmfHeader;  //用于保存BMP文件頭信息,包括類型、大小、位移量等
					DWORD bmfHeaderLen;  //保存文件頭的長度

					bmfHeaderLen = sizeof(bmfHeader);  //讀取文件頭的長度
					//將m_pBuffer中文件頭復制到bmfHeader中
					
					strncpy((LPSTR)&bmfHeader, (LPSTR)m_pBuffer, bmfHeaderLen);
					if (bmfHeader.bfType != (*(WORD*)"BM"))   //如果文件類型不對,則返回
					{
						AfxMessageBox("BMP文件格式不準確");
						return NULL;
					}
				
					hDIB = m_pBuffer + bmfHeaderLen;  //將指針移至文件頭后面
					//讀取BMP文件的圖像數據,包括坐標及顏色格式等信息到BITMAPINFOHEADER對象
					BITMAPINFOHEADER &bmiHeader = *(LPBITMAPINFOHEADER)hDIB;
					//讀取BMP文件的圖像數據,包括坐標及顏色格式等信息到BITMAPINFO對象
					BITMAPINFO &bmInfo = *(LPBITMAPINFO)hDIB ;
					//根據bfOffBits屬性將指針移至文件頭后
					lpDIBBits = (m_pBuffer) + ((BITMAPFILEHEADER *)m_pBuffer)->bfOffBits;
					 CClientDC dc(pwnd);   //生成一個與當前窗口相關的CClientDC,用于管理輸出設置
					//生成DIBitmap數據
					m_hBitmap = CreateDIBitmap(dc.m_hDC,&bmiHeader,CBM_INIT,lpDIBBits,&bmInfo,DIB_RGB_COLORS);
					
					return m_hBitmap;
				

}

BOOL ADOConn::IsBMPFile(char *m_pBuffer)
{
	BOOL bl=TRUE;
	
	BITMAPFILEHEADER bmfHeader;  //用于保存BMP文件頭信息,包括類型、大小、位移量等
	DWORD bmfHeaderLen;  //保存文件頭的長度

	bmfHeaderLen = sizeof(bmfHeader);  //讀取文件頭的長度
	//將m_pBuffer中文件頭復制到bmfHeader中
	strncpy((LPSTR)&bmfHeader, (LPSTR)m_pBuffer, bmfHeaderLen); 	
	if (bmfHeader.bfType != (*(WORD*)"BM"))   //如果文件類型不對,則返回
	bl=FALSE;
	return bl;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
捆绑调教一区二区三区| 免费观看30秒视频久久| 国产亚洲精品免费| 精品嫩草影院久久| 久久婷婷国产综合国色天香| 日韩欧美在线综合网| 日韩女同互慰一区二区| 日韩一二三四区| 2019国产精品| 久久精品日产第一区二区三区高清版 | 久久精品久久综合| 日本aⅴ亚洲精品中文乱码| 麻豆精品在线播放| 国产成人av一区二区| 成人高清免费观看| 色综合一区二区| 精品视频999| 欧美一级爆毛片| 中文成人av在线| 一级中文字幕一区二区| 午夜精品久久久久久| 精品一区二区综合| 99精品国产一区二区三区不卡 | 日日夜夜精品视频免费| 蜜桃91丨九色丨蝌蚪91桃色| 国产高清不卡二三区| 在线精品视频小说1| 日韩欧美一卡二卡| 亚洲视频精选在线| 日韩国产高清在线| 成人一级黄色片| 精品视频一区三区九区| 久久综合久久综合九色| 亚洲人吸女人奶水| 久久99久久久久久久久久久| 成人视屏免费看| 欧美日韩综合色| 国产欧美精品国产国产专区| 亚洲成人免费影院| 粉嫩av一区二区三区在线播放| 色老汉av一区二区三区| 欧美精品一区二区高清在线观看 | 欧美羞羞免费网站| 精品福利视频一区二区三区| 一区二区三区欧美| 国产麻豆9l精品三级站| 欧美日韩一区高清| 中文字幕一区二区三区视频| 麻豆国产欧美日韩综合精品二区| 99精品视频在线观看| 欧美va在线播放| 亚洲一区二区在线观看视频 | 国产成人8x视频一区二区| 欧美亚洲综合在线| 亚洲欧洲一区二区在线播放| 久久草av在线| 欧美日韩二区三区| 亚洲免费观看高清完整版在线观看 | 6080亚洲精品一区二区| 成人免费在线播放视频| 国产精品伊人色| 日韩免费高清视频| 日韩影院精彩在线| 欧美久久久久中文字幕| 亚洲午夜免费电影| 日本韩国精品在线| 亚洲精品日产精品乱码不卡| 成人av资源在线观看| 久久精品人人爽人人爽| 国产一区在线视频| 久久你懂得1024| 国产成人精品免费| 国产精品午夜春色av| 成人理论电影网| 亚洲欧美自拍偷拍| 色老汉av一区二区三区| 亚洲一区二区av电影| 欧美日韩一区二区三区四区| 亚洲午夜一区二区三区| 欧美日韩亚洲综合| 日韩高清一区二区| 欧美电影精品一区二区| 黄色小说综合网站| 国产欧美日韩三级| 91欧美一区二区| 亚洲国产精品一区二区久久恐怖片 | 一区二区三区美女视频| 91蜜桃免费观看视频| 亚洲免费视频中文字幕| 欧美视频第二页| 日韩av二区在线播放| 精品久久五月天| 成人黄色大片在线观看| 亚洲欧美另类小说| 欧美日韩一级大片网址| 蜜臀av性久久久久蜜臀aⅴ| 久久亚洲欧美国产精品乐播| 成人激情视频网站| 亚洲一区二区三区四区在线免费观看| 欧美日韩大陆一区二区| 麻豆精品视频在线观看| 国产精品你懂的在线| 欧美日韩在线亚洲一区蜜芽| 国内精品写真在线观看| 亚洲精品视频在线观看网站| 91精品国产综合久久久蜜臀粉嫩| 韩国精品一区二区| 尤物视频一区二区| 欧美精品一区二区在线播放| 色av成人天堂桃色av| 久久国产精品色| 亚洲免费观看高清完整版在线观看| 欧美挠脚心视频网站| 国产一区免费电影| 三级久久三级久久久| 中文字幕中文乱码欧美一区二区| 3d动漫精品啪啪1区2区免费| 成人小视频在线| 免费黄网站欧美| 亚洲激情av在线| 国产欧美日韩精品在线| 在线综合亚洲欧美在线视频| 99在线视频精品| 国产在线国偷精品免费看| 亚洲国产美国国产综合一区二区| 日本一区二区不卡视频| 精品国产免费人成电影在线观看四季| 91亚洲国产成人精品一区二区三 | 91麻豆免费看片| 国产乱人伦偷精品视频不卡 | 久久久久久久免费视频了| 欧美日韩一区二区三区不卡| 成人网在线免费视频| 精品一区二区三区免费| 婷婷中文字幕综合| 一区二区三区在线观看欧美| 中文字幕 久热精品 视频在线 | 欧美美女一区二区三区| 91美女片黄在线观看| 波多野结衣中文一区| 国产成+人+日韩+欧美+亚洲| 激情综合网最新| 欧美aⅴ一区二区三区视频| 亚洲观看高清完整版在线观看| 亚洲三级小视频| 亚洲女同女同女同女同女同69| 国产精品入口麻豆原神| 国产欧美日韩精品在线| 久久精品人人做人人爽人人| 久久免费国产精品| 久久久精品一品道一区| 国产欧美日韩综合精品一区二区| 久久亚洲影视婷婷| 国产日韩欧美高清| 欧美国产一区在线| 国产精品乱人伦| 亚洲天堂成人在线观看| 最新久久zyz资源站| 亚洲摸摸操操av| 亚洲成av人片在线| 久久精品国产亚洲一区二区三区 | 成人av电影在线观看| 成人v精品蜜桃久久一区| av亚洲精华国产精华精| 成人免费不卡视频| 色悠久久久久综合欧美99| 91成人免费在线视频| 欧美精品久久天天躁| 91精品国产全国免费观看| 日韩精品一区在线观看| 久久久综合网站| 亚洲丝袜自拍清纯另类| 香蕉加勒比综合久久| 激情六月婷婷综合| 成人一级视频在线观看| 91成人在线观看喷潮| 日韩欧美一区在线观看| 国产日本欧洲亚洲| 亚洲综合无码一区二区| 免费成人在线网站| 不卡电影一区二区三区| 欧美日韩国产电影| 亚洲国产精品v| 午夜av一区二区| 成人免费毛片a| 欧美日韩免费在线视频| 久久免费精品国产久精品久久久久| 国产精品久久久久9999吃药| 亚洲成人动漫在线免费观看| 九一九一国产精品| 日本精品一区二区三区四区的功能| 69堂精品视频| 亚洲欧美色综合| 国产在线不卡一区| 欧美性色黄大片| 国产精品你懂的在线| 免费美女久久99| 欧美色视频一区| 欧美国产日产图区| 精品一区二区三区av|