首頁 資料庫 mysql教程 VC++对Access数据库的操作(查询、插入、更新、删除等)

VC++对Access数据库的操作(查询、插入、更新、删除等)

Jun 07, 2016 pm 03:42 PM
access 刪除 插入 操作 資料庫 更新 查詢

Microsoft Office Access是由 微软 发布的 关系 数据库 管理系统 。 Access 数据库 常应用于小型软件系统中, 比如: 生产管理 、 销售管理 、 库存管理 等各类企业管理软件,其最大的优点是:简单易学、使用灵活。 下面我们结合实例来详细说明,在VC MFC中

Microsoft Office Access是由微软发布的关系数据库管理系统Access数据库常应用于小型软件系统中,比如:生产管理销售管理库存管理等各类企业管理软件,其最大的优点是:简单易学、使用灵活。

下面我们结合实例来详细说明,在VC++ MFC中,如何使用Access数据库文件进行数据的存储,如何实现对数据库中数据的查询插入更新删除操作

(实例可在我的CSDN资源中下载:http://download.csdn.net/detail/margin1988/8235865)

首先,怎样创建一个可供VC++ MFC程序使用的Access数据库,并在该数据库中创建数据表呢?

第一步:打开Microsoft Office Access软件,点击“空白数据库”;

VC++对Access数据库的操作(查询、插入、更新、删除等)

第二步:设置预创建空白数据库的文件名和文件类型(文件名:point32.mdb,文件类型:Microsoft Office Access 2000 数据库(*.mdb));

VC++对Access数据库的操作(查询、插入、更新、删除等)

第三步:“创建”空白数据库

VC++对Access数据库的操作(查询、插入、更新、删除等)

第四步:为该数据库“设置数据库密码”(本例中密码设置为:1234);

VC++对Access数据库的操作(查询、插入、更新、删除等)

第五步:在该数据库中创建一张表,例如:TestTab(编号,姓名,性别,年龄);

VC++对Access数据库的操作(查询、插入、更新、删除等)

第六步:表创建完成后,保存并关闭数据库,然后将该数据库文件(point32.mdb)剪切到你的VC++程序debug或release目录中,则准备工作完成。

其次,在VC++ MFC中编写对该数据库TestTab表进行数据查询插入更新删除操作的方法:

(1)导入才用ado方式访问Access数据库所需的DLL

#import "C:\Program Files\Common Files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")//ado访问ACCESS<strong>数据库</strong>必需
登入後複製

(2)在程序的入口函数中,初始化OLE以支持应用程序

AfxOleInit();
登入後複製

(3)获取应用程序(EXE)所在路径

CString path;//应用程序所在路径
char filepath[256];
char* pPath; 
GetModuleFileName(AfxGetInstanceHandle(),filepath,256);
pPath  = strrchr(filepath,'\\');
*pPath = 0;
path = filepath;
登入後複製

(4)创建数据库访问连接字符串

char* PtConnectStr;//<strong>数据库</strong>连接字符串
CString connstr =  "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
connstr += path;
connstr += "\\point32.mdb";
connstr += ";Jet OLEDB:Database Password='1234'";
PtConnectStr = connstr.GetBuffer(0);
登入後複製

(5)查询TestTab表中数据方法实现
//<strong>查询</strong>表中数据,并显示在List Control控件中
void CPoint32Dlg::ReadUserInfo()
{
	//select
	m_list.DeleteAllItems();//清空列表

	_ConnectionPtr m_pConnection;
	_RecordsetPtr m_pRecordset;

	try
	{
		m_pConnection.CreateInstance(__uuidof(Connection));
		m_pConnection->Open(PtConnectStr,"","",adModeUnknown);
	}
	catch(_com_error e)
	{
		CString errormessage;
		errormessage.Format("<strong>数据库</strong>连接失败.\r错误信息:%s",e.ErrorMessage());
		//AfxMessageBox(errormessage);
		MessageBox(errormessage,"连接失败",MB_ICONEXCLAMATION);
		if(m_pConnection->State)
			m_pConnection->Close();
		return;
	}

	try
	{

		//获取数据,放在数据集中
		CString cmd;
		cmd.Format("SELECT * FROM TestTab");

		m_pRecordset.CreateInstance("ADODB.Recordset");
		m_pRecordset->Open(cmd.GetBuffer(),
			_variant_t((IDispatch*)m_pConnection,true),
			adOpenStatic,
			adLockOptimistic,
			adCmdText);

		//处理数据,并显示
		_variant_t varbuffer;
		long index = 0;//注意:必须是long类型
		int countItem = 0;
		CString str;

		while(!m_pRecordset->adoEOF)
		{
			index = 0;
			//读ID号
			varbuffer = m_pRecordset->GetCollect(_variant_t(index));			
			if(varbuffer.vt!=VT_NULL)
			{
				str.Format("%d",varbuffer.lVal);
				m_list.InsertItem(countItem,str.GetBuffer());
			}
			//读其它的信息
			while(index GetCollect(_variant_t(index));
				if(varbuffer.vt!=VT_NULL)
				{
					str = (LPCTSTR)(_bstr_t)varbuffer;
					m_list.SetItemText(countItem,index,str.GetBuffer());
				}
			}

			m_pRecordset->MoveNext();
			countItem++;
		}
	}
	catch(_com_error &e)
	{
		//AfxMessageBox(e.Description());
		MessageBox(e.Description(),"<strong>数据库</strong><strong>操作</strong>失败.",MB_ICONEXCLAMATION);
		if(m_pRecordset->State)
			m_pRecordset->Close();
		if(m_pConnection->State)
			m_pConnection->Close();
		return;
	}

	if(m_pRecordset->State)
		m_pRecordset->Close();
	if(m_pConnection->State)
		m_pConnection->Close();
}
登入後複製

(6)向TestTab表中插入数据方法实现
//向表中<strong>插入</strong>数据,并<strong>更新</strong>List Control控件中显示的数据
void CPoint32Dlg::OnBnClickedButton1()
{
	//insert
	_ConnectionPtr m_pConnection;
	_variant_t RecordsAffected;
	try
	{
		m_pConnection.CreateInstance(__uuidof(Connection));
		m_pConnection->Open(PtConnectStr,"","",adModeUnknown);
	}
	catch(_com_error e)
	{
		CString errormessage;
		errormessage.Format("<strong>数据库</strong>连接失败.\r错误信息:%s",e.ErrorMessage());
		MessageBox(errormessage,"       添加失败       ",MB_ICONEXCLAMATION);
		return;
	}
	try
	{
		CString strCmd="INSERT INTO TestTab(UName,UGender,UAge) VALUES('测试者','男','30')";

		for(int i=0;iExecute(strCmd.AllocSysString(),&RecordsAffected,adCmdText);
		}
	}
	catch(_com_error &e)
	{
		//AfxMessageBox(e.Description());
		MessageBox(e.Description(),"       添加失败       ",MB_ICONEXCLAMATION);
		if(m_pConnection->State)
			m_pConnection->Close();
		return;
	}
	if(m_pConnection->State)
		m_pConnection->Close();
	//MessageBox("添加成功!","消息");

	m_update.EnableWindow(TRUE);
	m_delete.EnableWindow(TRUE);

	ReadUserInfo();
}
登入後複製

(7)更新TestTab表中数据方法实现
//<strong>更新</strong>表中数据,并<strong>更新</strong>List Control控件的显示
void CPoint32Dlg::OnBnClickedButton3()
{
	// update
	_ConnectionPtr m_pConnection;
	_variant_t RecordsAffected;
	try
	{
		m_pConnection.CreateInstance(__uuidof(Connection));
		m_pConnection->Open(PtConnectStr,"","",adModeUnknown);
	}
	catch(_com_error e)
	{
		CString errormessage;
		errormessage.Format("<strong>数据库</strong>连接失败.\r错误信息:%s",e.ErrorMessage());
		MessageBox(errormessage,"       修改失败       ",MB_ICONEXCLAMATION);
		return;
	}
	try
	{
		CString strCmd="UPDATE TestTab SET [UGender]='女',[UAge]='20' WHERE [UName]='测试者'";

		m_pConnection->Execute(strCmd.AllocSysString(),&RecordsAffected,adCmdText);
	}
	catch(_com_error &e)
	{
		//AfxMessageBox(e.Description());
		MessageBox(e.Description(),"       修改失败       ",MB_ICONEXCLAMATION);
		if(m_pConnection->State)
			m_pConnection->Close();
		return;
	}
	if(m_pConnection->State)
		m_pConnection->Close();
	//MessageBox("修改成功!","消息");

	ReadUserInfo();
}
登入後複製

(8)删除TestTab表中数据及重置表中自动编号主键(key)方法现实

//<strong>删除</strong>表中数据、重置自动编号(从1开始),并<strong>更新</strong>List Control控件显示
void CPoint32Dlg::OnBnClickedButton4()
{
	// delete
	_ConnectionPtr m_pConnection;
	_variant_t RecordsAffected;
	try
	{
		m_pConnection.CreateInstance(__uuidof(Connection));
		m_pConnection->Open(PtConnectStr,"","",adModeUnknown);
	}
	catch(_com_error e)
	{
		CString errormessage;
		errormessage.Format("连接<strong>数据库</strong>失败!\r错误信息:%s",e.ErrorMessage());
		MessageBox(errormessage,"<strong>删除</strong>失败",MB_ICONEXCLAMATION);
		return;
	}
	try
	{
		//<strong>删除</strong>表中所有数据
		CString strCmd="DELETE FROM TestTab";

		m_pConnection->Execute(strCmd.AllocSysString(),&RecordsAffected,adCmdText);

		//重置表中自动编号ID,使其从1开始增加(必须先<strong>删除</strong>表中所有数据)
		strCmd="ALTER TABLE TestTab ALTER COLUMN ID COUNTER(1,1)";

		m_pConnection->Execute(strCmd.AllocSysString(),&RecordsAffected,adCmdText);
	}
	catch(_com_error &e)
	{
		//AfxMessageBox(e.Description());
		MessageBox(e.Description(),"<strong>删除</strong>失败",MB_ICONEXCLAMATION);
		if(m_pConnection->State)
			m_pConnection->Close();
		return;
	}
	if(m_pConnection->State)
		m_pConnection->Close();
	//MessageBox("<strong>删除</strong>成功!","完成");

	m_insert.EnableWindow(TRUE);
	m_update.EnableWindow(FALSE);
	m_delete.EnableWindow(FALSE);

	ReadUserInfo();
}
登入後複製

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1659
14
CakePHP 教程
1415
52
Laravel 教程
1310
25
PHP教程
1258
29
C# 教程
1232
24
apache怎麼配置zend apache怎麼配置zend Apr 13, 2025 pm 12:57 PM

如何在 Apache 中配置 Zend?在 Apache Web 服務器中配置 Zend Framework 的步驟如下:安裝 Zend Framework 並解壓到 Web 服務器目錄中。創建 .htaccess 文件。創建 Zend 應用程序目錄並添加 index.php 文件。配置 Zend 應用程序(application.ini)。重新啟動 Apache Web 服務器。

甲骨文在商業世界中的作用 甲骨文在商業世界中的作用 Apr 23, 2025 am 12:01 AM

Oracle不僅是數據庫公司,還是雲計算和ERP系統的領導者。 1.Oracle提供從數據庫到雲服務和ERP系統的全面解決方案。 2.OracleCloud挑戰AWS和Azure,提供IaaS、PaaS和SaaS服務。 3.Oracle的ERP系統如E-BusinessSuite和FusionApplications幫助企業優化運營。

MySQL與其他數據庫:比較選項 MySQL與其他數據庫:比較選項 Apr 15, 2025 am 12:08 AM

MySQL適合Web應用和內容管理系統,因其開源、高性能和易用性而受歡迎。 1)與PostgreSQL相比,MySQL在簡單查詢和高並發讀操作上表現更好。 2)相較Oracle,MySQL因開源和低成本更受中小企業青睞。 3)對比MicrosoftSQLServer,MySQL更適合跨平台應用。 4)與MongoDB不同,MySQL更適用於結構化數據和事務處理。

使用DICR/YII2-Google將Google API集成在YII2中 使用DICR/YII2-Google將Google API集成在YII2中 Apr 18, 2025 am 11:54 AM

vProcesserazrabotkiveb被固定,мнелостольностьстьс粹餾標д都LeavallySumballanceFriablanceFaumDoptoMatification,Čtookazalovnetakprosto,kakaožidal.posenesko

MySQL:結構化數據和關係數據庫 MySQL:結構化數據和關係數據庫 Apr 18, 2025 am 12:22 AM

MySQL通過表結構和SQL查詢高效管理結構化數據,並通過外鍵實現表間關係。 1.創建表時定義數據格式和類型。 2.使用外鍵建立表間關係。 3.通過索引和查詢優化提高性能。 4.定期備份和監控數據庫確保數據安全和性能優化。

apache服務器是什麼 apache服務器是乾嘛的 apache服務器是什麼 apache服務器是乾嘛的 Apr 13, 2025 am 11:57 AM

Apache服務器是強大的Web服務器軟件,充當瀏覽器與網站服務器間的橋樑。 1. 它處理HTTP請求,根據請求返回網頁內容;2. 模塊化設計允許擴展功能,例如支持SSL加密和動態網頁;3. 配置文件(如虛擬主機配置)需謹慎設置,避免安全漏洞,並需優化性能參數,例如線程數和超時時間,才能構建高性能、安全的Web應用。

Debian Apache日誌中如何識別惡意訪問 Debian Apache日誌中如何識別惡意訪問 Apr 13, 2025 am 07:30 AM

有效監控和防禦惡意網站訪問對於Debian系統的Apache服務器至關重要。 Apache訪問日誌是識別此類威脅的關鍵信息來源。本文將指導您如何分析日誌並採取防禦措施。識別惡意訪問行為Debian系統的Apache訪問日誌通常位於/var/log/apache2/access.log。您可以通過多種方法分析日誌:日誌文件位置確認:首先,請確認您的Apache訪問日誌的準確位置,它可能因係統配置而略有不同。命令行工具分析:使用grep命令搜索特定模式,例如grep"404"

Nginx性能監控與故障排查工具使用 Nginx性能監控與故障排查工具使用 Apr 13, 2025 pm 10:00 PM

Nginx性能監控與故障排查主要通過以下步驟進行:1.使用nginx-V查看版本信息,並啟用stub_status模塊監控活躍連接數、請求數和緩存命中率;2.利用top命令監控系統資源佔用,iostat和vmstat分別監控磁盤I/O和內存使用情況;3.使用tcpdump抓包分析網絡流量,排查網絡連接問題;4.合理配置worker進程數,避免並發處理能力不足或進程上下文切換開銷過大;5.正確配置Nginx緩存,避免緩存大小設置不當;6.通過分析Nginx日誌,例如使用awk和grep命令或ELK

See all articles