VS2013在MFC中使用ADO方法操作Access2013数据库
1. 首先创建一个基于对话框的MFC应用程序ADO_ACCESS.sln.然后在stdafx.h头文件末尾添加(网上有说在某个#include后面的添加的,也有说在合适位置添加的,我这里直接添加在最末尾)
win32位系统添加
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
win64位系统添加
#import "C:\Program Files (x86)\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEOF")
添加完成后#import下面会出现红色波浪线提示错误,不用理会,过会儿会消失。
2. 在ADO_ACCESSDlg.h类里的public下添加
_ConnectionPtr m_pConnection;//连接access数据库的链接对象
_RecordsetPtr m_pRecordset;//结果集对象
3. 初始化数据库连接。 在ADO_ACCESSDlg.cpp文件的OnInitDialog()初始化成员函数里添加如下代码:
// TODO: 在此添加额外的初始化代码try{CoInitialize(NULL);m_pConnection = _ConnectionPtr(__uuidof(Connection));m_pConnection->ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=D:\\mfc_access.accdb;";m_pConnection->Open("", "", "", adConnectUnspecified);}catch (_com_error e){AfxMessageBox(_T("数据库连接失败!"));return FALSE;}
如果选择win32 安装office 32位
如果选择x64 安装office 64位
4. 连接数据库成功后,我们新建四个按钮分别实现增加、删除、修改、查询分别对应BUTTON1 - BUTTON4
增加
//增加
void CADO_ACCESSDlg::OnBnClickedButton1()
{// TODO: 在此添加控件通知处理程序代码_variant_t RecordsAffected;CString AddSql;AddSql.Format(_T("INSERT INTO userInfo(name,sex,age) VALUES('小花','女',12)"));try{m_pConnection->Execute((_bstr_t)AddSql, &RecordsAffected, adCmdText);AfxMessageBox(_T("添加用户成功!"));}catch (_com_error* e){AfxMessageBox(_T("添加用户失败!"));}
}
删除
//删除
void CADO_ACCESSDlg::OnBnClickedButton2()
{// TODO: 在此添加控件通知处理程序代码CString str;try{str.Format(_T("DELETE from userInfo where id=2"));_variant_t RecordsAffected;m_pConnection->Execute((_bstr_t)str, &RecordsAffected, adCmdText);AfxMessageBox(_T("删除成功!"));}catch (_com_error*e){AfxMessageBox(e->ErrorMessage());}
}
修改
//修改
void CADO_ACCESSDlg::OnBnClickedButton3()
{// TODO: 在此添加控件通知处理程序代码CString str;try{str.Format(_T("update userInfo set name='小草' where id=3"));_variant_t RecordsAffected;m_pConnection->Execute((_bstr_t)str, &RecordsAffected, adCmdText);AfxMessageBox(_T("修改成功!"));}catch (_com_error*e){AfxMessageBox(e->ErrorMessage());}
}
查询
//查询
void CADO_ACCESSDlg::OnBnClickedButton4()
{// TODO: 在此添加控件通知处理程序代码UpdateData(true);CString strName;CString strSex;try{m_pRecordset.CreateInstance(__uuidof(Recordset));CString search_sql;search_sql.Format(_T("SELECT * FROM userInfo"));m_pRecordset = ((CADO_ACCESSDlg*)(AfxGetMainWnd()))->m_pConnection->Execute(search_sql.AllocSysString(), NULL, adCmdText);while (!m_pRecordset->adoEOF){strName = m_pRecordset->GetCollect("name").bstrVal;strSex = m_pRecordset->GetCollect("sex").bstrVal;m_pRecordset->MoveNext();}m_pRecordset->Close();}catch (_com_error e){AfxMessageBox(_T("搜索失败!"));return;}
}
VS2013在MFC中使用ADO方法操作Access2013数据库 配套的源码下载
VS2013在MFC中使用ADO方法操作Access2013数据库相关推荐
- VS2015在MFC中使用ADO方法连接Access2013数据库
十月份导师的项目启动,自己的任务是移植一套师兄已经用VC++6.0做了百分之七八十的测量系统.正所谓万事开头难,加上只有C语言基础,简直是束手无策.幸而有师兄的指导,但毕竟师兄只是说个大概的方法,不可 ...
- python使用方法-在Python中使用next()方法操作文件的教程
next()方法当一个文件被用作迭代器,典型例子是在一个循环中被使用,next()方法被反复调用.此方法返回下一个输入行,或引发StopIteration异常EOF时被命中. 与其它文件的方法,如Re ...
- python脚本怎么使用_在Python中使用next()方法操作文件的教程
next()方法当一个文件被用作迭代器,典型例子是在一个循环中被使用,next()方法被反复调用.此方法返回下一个输入行,或引发StopIteration异常EOF时被命中. 与其它文件的方法,如Re ...
- VB.NET学习笔记:ADO.NET操作ACCESS数据库——ADO.NET数据访问接口
一.ADO.NET概述 Ado.net基于XML和离线计算模型. ADO.net的两个核心组件:.Net数据提供程序.DataSet. .net数据提供程序用来与数据库的连接,如SQLServer.n ...
- MFC中使用OLE/COM操作EXCEL的方法
使用OLE的方法操作EXCEL,首先计算机必须安装excel,这样才会有接口暴露出来.本次使用大神封装好的类. excel作为OLE/COM库插件,定义好了各类交互接口,而且这些接口是跨语言的,可以导 ...
- vs使用ado连接oracle,在VS环境下以ADO方式操作Oracle数据库
利用ADO引擎方式访问Oracle数据库的实现方法: 定义数据库头文件为CDBOperation.h #pragma once #import "C:\Program Files\Commo ...
- Electron中使用sql.js操作SQLite数据库
推荐sql.js--一款纯js的sqlite工具. 一.关于sql.js sql.js(https://github.com/kripken/sql.js)通过使用Emscripten编译SQLite ...
- VB.NET学习笔记:ADO.NET操作ACCESS数据库——OleDbDataAdapter的Update方法更新数据库的秘密(行状态RowState和行版本 DataRowVersion)
在<数据集DataSet数据管理(DataAdapter查询更新数据库)>一文中提到可以使用OleDbDataAdapter对象的Update方法还可将对 DataSet 所做的更改解析回 ...
- shell脚本mysql_Shell脚本中执行sql语句操作MySQL数据库的几个方法
实验如下: [root@idb1 ~]# more /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m mysql> show va ...
最新文章
- Mybatis之通用Mapper使用
- 青源LIVE第22期|旷视刘松涛:YOLOX,高性能目标检测的最新实践
- 数据结构:单向环形链表
- Android 博客园客户端 (八) 下拉刷新、分页,AsyncTask
- 操作系统:166个Linux实用命令,太全了!
- 荣耀30 Pro+价格曝光:顶配真的高攀不起!
- [Linux]Red Hat Linux 9.0环境下架设Web服务器[2]
- test Math
- [SDOI2016]储能表——数位DP
- 免费的社工机器人?查看是否自己被社工?
- oracle经纬度换算成xy坐标,xy坐标转换经纬度【处置步骤】
- 离散-关系矩阵乘法运算
- nmap 扫描 STATE 显示closed
- uni-app项目配置UrlSchemes在外部打开APP
- 有没有测试水泥稳定性的软件,水泥稳定碎石基层的试验检测项目有哪些?急 急 急!!!...
- 助力无人船舶,开拓水上智能
- 一般游戏原画制作的步骤是什么
- 完美解决“未能装载Office文档控件。请使用Internet Explorer(6.0+)浏览器并检查浏览器的安全设置。”的方案
- 买服务器不做网站需要备案吗,买服务器需要备案吗
- C++17类型std::variant介绍