VC++对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软件,点击“空白数据库”;
第二步:设置预创建空白数据库的文件名和文件类型(文件名:point32.mdb,文件类型:Microsoft Office Access 2000 数据库(*.mdb));
第三步:“创建”空白数据库;
第四步:为该数据库“设置数据库密码”(本例中密码设置为:1234);
第五步:在该数据库中创建一张表,例如:TestTab(编号,姓名,性别,年龄);
第六步:表创建完成后,保存并关闭数据库,然后将该数据库文件(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(); }

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템으로, 주로 데이터를 신속하고 안정적으로 저장하고 검색하는 데 사용됩니다. 작업 원칙에는 클라이언트 요청, 쿼리 해상도, 쿼리 실행 및 반환 결과가 포함됩니다. 사용의 예로는 테이블 작성, 데이터 삽입 및 쿼리 및 조인 작업과 같은 고급 기능이 포함됩니다. 일반적인 오류에는 SQL 구문, 데이터 유형 및 권한이 포함되며 최적화 제안에는 인덱스 사용, 최적화 된 쿼리 및 테이블 분할이 포함됩니다.

MySQL은 성능, 신뢰성, 사용 편의성 및 커뮤니티 지원을 위해 선택됩니다. 1.MYSQL은 효율적인 데이터 저장 및 검색 기능을 제공하여 여러 데이터 유형 및 고급 쿼리 작업을 지원합니다. 2. 고객-서버 아키텍처 및 다중 스토리지 엔진을 채택하여 트랜잭션 및 쿼리 최적화를 지원합니다. 3. 사용하기 쉽고 다양한 운영 체제 및 프로그래밍 언어를 지원합니다. 4. 강력한 지역 사회 지원을 받고 풍부한 자원과 솔루션을 제공합니다.

Apache에서 Zend를 구성하는 방법은 무엇입니까? Apache 웹 서버에서 Zend 프레임 워크를 구성하는 단계는 다음과 같습니다. Zend 프레임 워크를 설치하고 웹 서버 디렉토리로 추출하십시오. .htaccess 파일을 만듭니다. Zend 응용 프로그램 디렉토리를 작성하고 Index.php 파일을 추가하십시오. Zend 응용 프로그램 (application.ini)을 구성하십시오. Apache 웹 서버를 다시 시작하십시오.

Apache Server는 브라우저와 웹 사이트 서버 간의 브리지 역할을하는 강력한 웹 서버 소프트웨어입니다. 1. HTTP 요청을 처리하고 요청에 따라 웹 페이지 컨텐츠를 반환합니다. 2. 모듈 식 디자인은 SSL 암호화 지원 및 동적 웹 페이지와 같은 확장 된 기능을 허용합니다. 3. 보안 취약점을 피하고 고성능 웹 애플리케이션을 구축하기 위해 보안 취약점을 피하고 스레드 카운트 및 타임 아웃 시간과 같은 성능 매개 변수를 최적화하기 위해 구성 파일 (예 : 가상 호스트 구성)을 신중하게 설정해야합니다.

이 기사는 데비안 시스템에서 Apache Logs를 분석하여 웹 사이트 성능을 향상시키는 방법을 설명합니다. 1. 로그 분석 기본 사항 Apache Log는 IP 주소, 타임 스탬프, 요청 URL, HTTP 메소드 및 응답 코드를 포함한 모든 HTTP 요청의 자세한 정보를 기록합니다. 데비안 시스템 에서이 로그는 일반적으로 /var/log/apache2/access.log 및 /var/log/apache2/error.log 디렉토리에 있습니다. 로그 구조를 이해하는 것은 효과적인 분석의 첫 번째 단계입니다. 2. 로그 분석 도구 다양한 도구를 사용하여 Apache 로그를 분석 할 수 있습니다.

이 기사에서는 데비안 시스템에서 NGINX 서버의 SSL 성능을 효과적으로 모니터링하는 방법에 대해 설명합니다. NginxOxporter를 사용하여 Nginx 상태 데이터를 프로 메테우스로 내보낸 다음 Grafana를 통해 시각적으로 표시합니다. 1 단계 : nginx 구성 먼저 Nginx 구성 파일에서 stub_status 모듈을 활성화하여 nginx의 상태 정보를 얻어야합니다. nginx 구성 파일에 다음 스 니펫을 추가하십시오 (일반적으로 /etc/nginx/nginx.conf에 있거나 포함 파일에 위치) : location/nginx_status {stub_status

vprocesserazrabotkiveb-enclosed, мнепришлостольносться악 · 뇨 зейейерациигоглапи혁 맥발 추배. LeavallysumballancefriAblancefaumdoMatification, čtookazalovnetakprosto, Kakaožidal.posenesko

Oracle은 데이터베이스 회사 일뿐 만 아니라 클라우드 컴퓨팅 및 ERP 시스템의 리더이기도합니다. 1. Oracle은 데이터베이스에서 클라우드 서비스 및 ERP 시스템에 이르기까지 포괄적 인 솔루션을 제공합니다. 2. OracleCloud는 AWS와 Azure에 도전하여 IAA, PAAS 및 SAAS 서비스를 제공합니다. 3. E-BusinessSuite 및 FusionApplications와 같은 Oracle의 ERP 시스템은 기업이 운영을 최적화하는 데 도움이됩니다.
