用戶登錄  |  用戶注冊
首 頁源碼下載網絡學院最新源碼源碼排行屏蔽廣告
當前位置:新興網絡 > 網絡學院 > 編程開發 > VC/MFC

VC 對Access數據庫讀寫操作實例

減小字體 增大字體 作者:佚名  來源:本站整理  發布時間:2010-05-21 15:57:32
    直接利用DAO來創建、讀寫Access文件。在下面的示例中,我們將用到兩種方法:SQL和DAO類函數來混合實現它們,這樣做的目地,我想可以使大家更加方便靈活的運用它們來完成你想要做的東西。在示例程序中默認指定創建數據庫名為:Demo.mdb,內部表名為:DemoTable,寫入兩個字段:名字和年齡,采用和上一篇讀寫Excel類似的操作,你也可以根據自己需要來動態改變它們。示例程序運行界面如下所示:
下面讓我們來簡要看看它的實現步驟:
1. 首先,應確保包含進了afxdao.h頭文件,可以在StdAfx.h文件中包含它,如下:
 
C/C++ code復制代碼
#include <afxdao.h>         //加入DAO數據庫支持
2. 聲明DAO庫及其記錄集變量,可在你的實現文件中加入下面代碼:
C/C++ code復制代碼
CDaoDatabase db; //數據庫
CDaoRecordset RecSet(&db); //記錄集

3. 接著,先讓我們來實現它的創建及寫入操作:
C/C++ code復制代碼
void CRWAccessDlg::OnWriteAccess() 
{
	//獲取主程序所在路徑,存在sPath中
	CString sPath;
	GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
	sPath.ReleaseBuffer ();
	int nPos;
	nPos=sPath.ReverseFind (''\\'');
	sPath=sPath.Left (nPos);

	//默認創建數據名:Demo.mdb,內部表名:DemoTable,表內有二個字段:姓名、年齡
	CString lpszFile = sPath + "\\Demo.mdb";
	
	CFileFind  fFind;
	BOOL bSuccess;
	bSuccess=fFind.FindFile(lpszFile);

	fFind.Close ();
    //是否已有創建好的Demo.mdb文件,沒有則創建它
	if(!bSuccess)
	{
		db.Create(lpszFile);

		CString SqlCmd = "CREATE TABLE DemoTable(Name VARCHAR(20),Age VARCHAR(3));";
		db.Execute(SqlCmd);
	
		//打開已創建的數據表
		RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,
			"SELECT * FROM DemoTable", 0);
		//加入第一個記錄,用SQL語句
		db.Execute("INSERT INTO DemoTable (Name,Age) VALUES (''徐景周'',26)");
		
		//加入第二個記錄,用DAO涵數
		RecSet.AddNew();
		RecSet.SetFieldValue("Name","徐志慧");
		RecSet.SetFieldValue("Age","21");
		RecSet.Update();
		
		//加入第三個記錄,用DAO涵數
		RecSet.AddNew();
		RecSet.SetFieldValue("Name","郭徽");
		RecSet.SetFieldValue("Age","27");
		RecSet.Update();
		
		//關閉記錄集及庫
		RecSet.Close();
		db.Close();

		AfxMessageBox("Access文件寫入成功!");
	}
	else
		AfxMessageBox("Demo.mdb數據庫已經創建!");
	
}

4. 最后,讓我們來實現它的讀取操作。

C/C++ code復制代碼
void CRWAccessDlg::OnReadAccess() 
{
	COleVariant var;		// 字段類型
	var.ChangeType(VT_BSTR, NULL);
	CString strName,strAge,strFile; 

	//清空列表框
	m_AccessList.ResetContent();

	//獲取主程序所在路徑,存在sPath中
	CString sPath;
	GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
	sPath.ReleaseBuffer ();
    int nPos;
	nPos=sPath.ReverseFind (''\\'');
	sPath=sPath.Left (nPos);

	strFile = sPath + "\\demo.mdb";
	db.Open(strFile);		// 打開已創建的demo數據庫及DamoTable表
	RecSet.Open(AFX_DAO_USE_DEFAULT_TYPE,"SELECT * FROM DemoTable",NULL);

	while(!RecSet.IsEOF())	// 有沒有到表結尾
	{
		RecSet.GetFieldValue("Name",var);
		strName = (LPCSTR)var.pbstrVal;
		RecSet.GetFieldValue("Age",var);
		strAge = (LPCSTR)var.pbstrVal;
		m_AccessList.AddString( strName + " --> "+strAge );

		RecSet.MoveNext();
	}

	//關閉記錄集及庫
	RecSet.Close();
	db.Close();
}

     相關細節參考打包源碼:http://www.71216532.buzz/Code/VC/data/43.html

Tags:Access 數據庫讀寫 VC

作者:佚名
  • 好的評價 如果您覺得此文章好,就請您
      100%(11)
  • 差的評價 如果您覺得此文章差,就請您
      0%(0)

網絡學院評論評論內容只代表網友觀點,與本站立場無關!

   評論摘要(共 1 條,得分 100 分,平均 100 分) 查看完整評論
[回復] 1游客   打分:100 分  發表時間:2016-02-29
· 很有幫助,謝謝分享
皮皮麻将官网下载 黑龙江福彩36选7走势图 中原风采22选5开奖号码预测 (*^▽^*)MG樱桃之恋_最新版 安徽快3预测一定牛 (*^▽^*)MG戴图理的神奇七游戏说明 吉林快3今天走势 (★^O^★)MG四灵巨额大奖视频 浙江快乐彩12选5开奖结果查询结果 (★^O^★)MG宝贝财神试玩 (^ω^)MG经典老虎机首页 彩票平台代刷流水是什么 4场进球规则 江苏快3今天推荐号码推荐 (^ω^)MG太阳征程登陆 彩票博彩 (★^O^★)MG三个朋友技巧介绍