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

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

?? adoaccessdlg.cpp

?? Evc中的數據庫連接源碼,有需要的朋友可一起研究哦
?? CPP
字號:
// ADOAccessDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ADOAccess.h"
#include "ADOAccessDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CADOAccessDlg dialog

CADOAccessDlg::CADOAccessDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CADOAccessDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CADOAccessDlg)
	m_strSql = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CADOAccessDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CADOAccessDlg)
	DDX_CBString(pDX, IDC_CMB_SQL, m_strSql);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CADOAccessDlg, CDialog)
	//{{AFX_MSG_MAP(CADOAccessDlg)
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_BTNCREATEDB, OnBtncreatedb)
	ON_BN_CLICKED(IDC_BTNOPENDB, OnBtnopendb)
	ON_BN_CLICKED(IDC_BTNEXEC, OnBtnexec)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CADOAccessDlg message handlers

BOOL CADOAccessDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	CenterWindow(GetDesktopWindow());	// center to the hpc screen

	//初始化COM庫
	CoInitializeEx(NULL,COINIT_MULTITHREADED);

	//建立與Access數據庫連接
    if (!CreateConnection())
    {
	   AfxMessageBox(_T("建立連接失敗"));
	   return FALSE;
    }

   	//設置人列表框標題	
	CListCtrl * pListCtrl = (CListCtrl*)GetDlgItem(IDC_LST_VIEW);

	CRect rt;
    pListCtrl->GetClientRect(&rt);
	pListCtrl->InsertColumn(0,_T("姓名"), LVCFMT_LEFT, rt.Width() * 0.5);
    pListCtrl->InsertColumn(1,_T("年齡"), LVCFMT_LEFT, rt.Width() * 0.5);
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CADOAccessDlg::OnDestroy() 
{
	//關閉連接
	CloseConnection();
	
	//釋放COM庫
    CoUninitialize();	
	CDialog::OnDestroy();
}



//與ADO數據庫建立連接
BOOL CADOAccessDlg::CreateConnection()
{
	CLSID	tClsid;
	HRESULT hr;

	//1,得到ADO連接對象對應ClassID
	hr = CLSIDFromProgID( g_szADOCE30ConnProgID, &tClsid );
	
	if (FAILED(hr))
	{
		return FALSE;
	}
	
    //2,創建ADO連接對象
	hr = CoCreateInstance (tClsid, NULL,
		CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,
		IID__Connection, (LPVOID *)&m_pADOCEConn);
	
	if((!m_pADOCEConn) || FAILED(hr))
	{
		return FALSE;
	}
		
	//3.設置連接數據庫的Provider
	hr = m_pADOCEConn->put_Provider(TEXT("cedb"));
	if FAILED(hr)
	{
		return FALSE;
	}

	//4.得到記錄集對象的ClassID
	hr = CLSIDFromProgID( g_szADOCE30RSProgID, &tClsid );
	if FAILED(hr)
	{
		return FALSE;
	}

	//5.創建結果集對象
	hr = CoCreateInstance (tClsid, NULL,
		CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,
		IID__Recordset,(LPVOID *)&m_pADOCERS);
				
	if((!m_pADOCERS) || FAILED(hr))
	{
		return FALSE;
	}
								
	return TRUE;

}

//關閉與Access數據庫連接
void CADOAccessDlg::CloseConnection()
{
	if (m_pADOCEConn != NULL)
	{
		m_pADOCEConn->Close();
		m_pADOCEConn->Release();
		m_pADOCEConn = NULL;
	}

	if (m_pADOCERS != NULL)
	{
		m_pADOCERS->Close();
        m_pADOCERS->Release();
		m_pADOCERS = NULL;
	}
}

/*
函數名稱:新建數據庫
入口參數:szDbName表示要新建的數據庫名稱
出口參數:無
返 回 值:TRUE:新建數據庫成功;FALSE:新建數據庫失敗
*/
BOOL CADOAccessDlg::CreateDatabase(LPCTSTR szDbName)
{
	VARIANT varTSQL,varEmpty; 
	HRESULT hr;
    TCHAR szSqlBuf[1024];
	wcscpy(szSqlBuf,_T("CREATE DATABASE '"));
	wcscat(szSqlBuf,szDbName);
	wcscat(szSqlBuf,_T("'"));

	VariantInit(&varTSQL);
	VariantInit(&varEmpty);
	
	varTSQL.bstrVal = SysAllocString(szSqlBuf);
	varTSQL.vt = VT_BSTR;
    
	//創建數據庫
    hr=m_pADOCERS->Open(varTSQL,varEmpty,MSADOCE::adOpenDynamic,MSADOCE::adLockOptimistic,MSADOCE::adCmdText);
	if(FAILED(hr))
	{
		return FALSE;
	}
	m_pADOCERS->Close();
	return TRUE;
}


/*
函數名稱:打開數據庫
入口參數:szDbName表示要打開的數據庫名稱
出口參數:無
返 回 值:TRUE:打開數據庫成功;FALSE:打開數據庫失敗
*/
BOOL CADOAccessDlg::OpenDatabase(LPCTSTR szDbName)
{
	HRESULT hr;
	VARIANT varConn1;


    //與指定的數據庫建立連接
	hr = m_pADOCEConn->Open(LPTSTR(szDbName),TEXT(""), TEXT(""),MSADOCE::adOpenUnspecified);
	if FAILED(hr)
	{
		return FALSE;
	}

	VariantInit(&varConn1);
	varConn1.pdispVal=m_pADOCEConn;
	varConn1.vt=VT_DISPATCH;
	//設置結果集對象到已建立的連接上
	hr=m_pADOCERS->put_ActiveConnection(varConn1);
	if (FAILED(hr))
	{
		return FALSE;
	}

	return TRUE;
}

//新建數據庫按鈕單擊事件代碼
void CADOAccessDlg::OnBtncreatedb() 
{
   CString dbFileName;

   TCHAR szFilters[]=_T("Access File (*.cdb)|*.cdb||");
   
   //打開文件保存對話框
   CFileDialog fileDlg (FALSE, _T("cdb"),NULL,OFN_PATHMUSTEXIST,szFilters,this);
   if (fileDlg.DoModal() == IDOK)
   {
	   dbFileName = fileDlg.GetPathName();
   }
   else
   {
	   return;
   }

   //
   if (!CreateDatabase(dbFileName))
   {
	   AfxMessageBox(_T("創建數據庫失敗"));
	   return;
   }	
}

//打開數據庫按鈕單擊事件代碼
void CADOAccessDlg::OnBtnopendb() 
{
   CString dbFileName;

   TCHAR szFilters[]=_T("Access File (*.cdb)|*.cdb||");
 
   //調用,打開文件對話框,選擇Access數據庫文件
   CFileDialog fileDlg (TRUE, _T("cdb"),_T("*.cdb"),OFN_FILEMUSTEXIST,szFilters,this);
   if (fileDlg.DoModal() == IDOK)
   {
	   dbFileName = fileDlg.GetPathName();
   }
   else
   {
	   return;
   }

   //打開數據庫
   if (!OpenDatabase(dbFileName))
   {
	   AfxMessageBox(_T("打開數據庫失敗"));
	   return;
   }	
}

//將表中的記錄在列表視圖上顯示
void CADOAccessDlg::AddRecordToView()
{
	HRESULT hr;
	short iEndOfFile;
	VARIANT			varData,varFieldSelect;
	TCHAR*			pszName;
	TCHAR*			pszAge;	
	pszName = (TCHAR*)malloc(40);
	pszAge = (TCHAR*)malloc(40);
    hr = m_pADOCERS->MoveFirst();
	//判斷記錄集指針是否到達尾部
	hr = m_pADOCERS->get_EOF(&iEndOfFile);
	int k=0;
	//設置學生列表框標題	
	CListCtrl * pListCtrl = (CListCtrl*)GetDlgItem(IDC_LST_VIEW);
	while(!iEndOfFile)
	{
			//得到表中字段集對象
			hr = m_pADOCERS->get_Fields(&m_pADOCEFields);
			varFieldSelect.uiVal = 0;
			varFieldSelect.vt = VT_UI2;
			hr = m_pADOCEFields->get_Item(varFieldSelect, &m_pADOCEField);
			hr = m_pADOCEField->get_Value(&varData);
			lstrcpy(pszName, varData.bstrVal);
			
			//得到字段對象
			varFieldSelect.uiVal = 1;
			varFieldSelect.vt = VT_I4;
			hr = m_pADOCEFields->get_Item(varFieldSelect, &m_pADOCEField);
			hr = m_pADOCEField->get_Value(&varData);
		    _itow(varData.lVal,pszAge,10);
			
			//向列表框中添加人信息
			pListCtrl->InsertItem(k,_T("Test"));
			//添加人名
			pListCtrl->SetItemText(k,0,pszName);
			//添加人年齡
			pListCtrl->SetItemText(k,1,pszAge);
			
			//將記錄集指針向后移動一個
			m_pADOCERS->MoveNext();
			m_pADOCERS->get_EOF(&iEndOfFile);
			k++;
	}
	free(pszName);
	free(pszAge);
}

//執行按鈕單擊事件代碼
void CADOAccessDlg::OnBtnexec() 
{
	HRESULT hr;
	VARIANT varStrSql,varEmpty;
	VariantInit(&varStrSql);
	VariantInit(&varEmpty);
	UpdateData(TRUE);
	varStrSql.bstrVal = SysAllocString(m_strSql);
	varStrSql.vt = VT_BSTR;
	hr = m_pADOCERS->Open(varStrSql,varEmpty,MSADOCE::adOpenDynamic,MSADOCE::adLockOptimistic,MSADOCE::adCmdText);
	SysFreeString(varStrSql.bstrVal);
						
	if (FAILED(hr))
	{
		AfxMessageBox(_T("執行失敗"));
	}
	long iCount = 0;
	hr = m_pADOCERS->get_RecordCount(&iCount);
	AddRecordToView();
	m_pADOCERS->Close();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美色图在线观看| 国产一区二区在线观看视频| 91丨九色丨黑人外教| 亚洲欧美福利一区二区| 91久久精品一区二区三| 午夜不卡av免费| 91精品国产综合久久香蕉麻豆| 日韩成人伦理电影在线观看| 亚洲精品免费在线| 欧美午夜一区二区三区免费大片| 亚洲综合一区二区精品导航| 在线成人av网站| 国产精一区二区三区| 国产精品你懂的在线| 在线影视一区二区三区| 久久精品99国产国产精| 国产亚洲短视频| 色婷婷国产精品| 日本亚洲欧美天堂免费| 国产欧美精品一区aⅴ影院| 在线观看国产91| 久久草av在线| 亚洲精品精品亚洲| 91麻豆精品国产91久久久久久久久 | 久久先锋资源网| 北岛玲一区二区三区四区| 亚洲无线码一区二区三区| 精品国产区一区| 91丝袜呻吟高潮美腿白嫩在线观看| 一区二区国产盗摄色噜噜| 精品不卡在线视频| 91网上在线视频| 精品在线播放午夜| 亚洲综合另类小说| 国产日韩三级在线| 欧美日韩成人一区| 成人激情免费网站| 免费视频一区二区| 亚洲激情综合网| 九九精品视频在线看| 亚洲三级理论片| 久久中文娱乐网| 884aa四虎影成人精品一区| 成人深夜福利app| 麻豆高清免费国产一区| 一区二区三区日韩精品| 欧美国产精品专区| 精品国精品自拍自在线| 欧美三级一区二区| av在线一区二区三区| 国产一区二区在线看| 视频一区视频二区中文字幕| 亚洲日本中文字幕区| 国产性做久久久久久| 日韩欧美一区在线| 欧美日韩国产一二三| 色婷婷国产精品综合在线观看| 国产精品综合av一区二区国产馆| 日韩电影免费在线看| 亚洲一区国产视频| 亚洲女女做受ⅹxx高潮| 国产精品国产三级国产a| 国产亚洲精品久| 日韩精品一区国产麻豆| 欧美一区二区视频免费观看| 在线亚洲人成电影网站色www| 国产成人av福利| 国内精品伊人久久久久av影院| 日韩一区精品视频| 日韩中文字幕区一区有砖一区 | 精品国产百合女同互慰| 91精品久久久久久久91蜜桃| 欧美性高清videossexo| 欧美在线不卡视频| 欧洲精品视频在线观看| 欧美性生交片4| 欧美日韩国产一区| 欧美一区二区三区小说| 日韩精品一区二区三区老鸭窝| 在线不卡a资源高清| 欧美一级在线观看| 日韩一区二区高清| 欧美xxxx老人做受| 国产亚洲成aⅴ人片在线观看| 国产欧美一区二区精品仙草咪| 欧美激情一区在线观看| 国产精品久久久久久久久免费桃花| 国产精品欧美一区二区三区| 国产精品成人网| 亚洲乱码国产乱码精品精可以看 | 性做久久久久久久免费看| 99精品一区二区| 91丝袜国产在线播放| 91久久人澡人人添人人爽欧美| 色88888久久久久久影院野外| 欧美系列在线观看| 日韩小视频在线观看专区| 日韩欧美一区电影| 亚洲国产精品精华液ab| 亚洲精品视频在线观看免费| 亚洲高清一区二区三区| 精品一区二区三区免费观看| 岛国av在线一区| 欧美性大战久久久久久久蜜臀| 欧美日韩国产成人在线91| xnxx国产精品| 亚洲男女一区二区三区| 免费成人性网站| 成人av在线网| 欧美精品视频www在线观看| 亚洲精品一区在线观看| 亚洲欧美一区二区三区国产精品| 亚洲午夜精品在线| 国产精品香蕉一区二区三区| 色综合久久六月婷婷中文字幕| 91麻豆精品国产自产在线观看一区 | 蜜桃av一区二区| 99精品视频在线观看免费| 91麻豆精品国产91久久久久| 国产亚洲一区二区在线观看| 一区二区三区色| 国产一区二区三区av电影| 日本韩国欧美一区二区三区| 日韩欧美国产午夜精品| 亚洲欧美日韩久久| 国产在线精品一区二区| 欧美日韩一二三区| 国产精品久久久久久久浪潮网站| 午夜精品免费在线观看| 波多野结衣中文一区| 精品日韩在线观看| 亚洲国产日韩精品| fc2成人免费人成在线观看播放| 欧美日韩精品高清| 亚洲视频 欧洲视频| 国产精品1区2区3区在线观看| 欧美日韩综合在线| 亚洲色图视频网| 丰满少妇久久久久久久| 精品久久99ma| 首页国产丝袜综合| 一本到不卡免费一区二区| 国产欧美一区二区精品性色| 日韩高清在线观看| 欧美手机在线视频| 亚洲黄一区二区三区| 成人精品视频.| 久久青草国产手机看片福利盒子| 丝袜a∨在线一区二区三区不卡| 色偷偷一区二区三区| 中文字幕在线一区免费| 欧美一区二区国产| 亚洲成在线观看| 欧美色倩网站大全免费| 亚洲精品一二三| 99久久精品免费| 欧美精彩视频一区二区三区| 精品一区二区成人精品| 欧美sm极限捆绑bd| 蜜臀99久久精品久久久久久软件| 欧美午夜片在线观看| 亚洲精品高清视频在线观看| 91亚洲精品一区二区乱码| 国产精品人成在线观看免费 | 爽爽淫人综合网网站 | 欧美久久久久久久久久| 亚洲自拍另类综合| 欧美色区777第一页| 亚洲国产欧美在线人成| 欧美日韩在线观看一区二区| 亚洲高清免费视频| 欧美日本国产视频| 日本不卡一二三| 欧美成人性战久久| 国产一区二区精品久久91| 国产日韩影视精品| 成人激情午夜影院| 亚洲欧美日韩国产综合在线| 91女人视频在线观看| 亚洲国产欧美在线| 亚洲成a人v欧美综合天堂下载| 欧美中文字幕亚洲一区二区va在线| 伊人色综合久久天天人手人婷| 91极品视觉盛宴| 婷婷中文字幕综合| 欧美xxxxx牲另类人与| 国产成人自拍网| 亚洲视频资源在线| 欧美日韩一区二区三区不卡| 日韩高清不卡在线| 久久精品在线观看| 色综合av在线| 日本亚洲三级在线| 国产精品人妖ts系列视频| 欧洲精品在线观看| 久久99精品国产麻豆不卡| 国产精品另类一区| 欧美日韩国产免费一区二区| 日本不卡中文字幕| 中文一区二区完整视频在线观看|