MFC ado操作mdb数据库
1.新建基于对话框应用程序
找到stdafx.h文件 在末尾加入
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2.找到对话框app类初始化函数InitInstance()其中加入
::CoInitialize(NULL);
::CoUninitialize();//在return之前
3.在对话框.h文件中定义
_ConnectionPtr m_pConnection;_RecordsetPtr m_pRecordset;
并在.h给对话框添加方法(函数)
void OnInitADOConn(void);void ExitConnect(void);void AddToGrid(void);
4.在对话框中添加list control控件设置auto arrange为true 。alignment为top 。 no label wrap 为true。 view 为 report(报表) sort为none。
添加四个edit控件分别用作学生编号,姓名,性别,学号。四个button控件添加,修改,删除,清空。
list控件添加控制变量m_Grid edit添加字符串值变量分别为
CString m_ID;CString m_Name;CString m_Sex;CString m_StuID;
5.找到控制面板,管理工具(查看方式小图标就有了),数据源odbc。在这里新建mdb数据库到工程debug里,命名为shujuku.mdb。
6.双击添加按钮写入
UpdateData(TRUE);if(m_ID.IsEmpty()||m_Name.IsEmpty()||m_Sex.IsEmpty()||m_StuID.IsEmpty()){MessageBox("基础信息不能为空!");return;}OnInitADOConn();_bstr_t sql;sql="select * from 表1";m_pRecordset.CreateInstance(__uuidof(Recordset));m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);try{m_pRecordset->AddNew();//添加新行m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);m_pRecordset->PutCollect("性别",(_bstr_t)m_Sex);m_pRecordset->PutCollect("学号",(_bstr_t)m_StuID);m_pRecordset->Update();//更新数据表ExitConnect();}catch(...){MessageBox("操作失败");return;}MessageBox("添加成功");m_Grid.DeleteAllItems();//删除列表控件AddToGrid();
双击修改按钮写入
UpdateData(TRUE);if(m_ID.IsEmpty()||m_Name.IsEmpty()||m_Sex.IsEmpty()||m_StuID.IsEmpty()){MessageBox("基础信息不能为空!");return;}OnInitADOConn();_bstr_t sql;sql="select * from 表1";m_pRecordset.CreateInstance(__uuidof(Recordset));m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);long pos = m_Grid.GetSelectionMark();try{m_pRecordset->Move((long)pos,vtMissing);m_pRecordset->PutCollect("编号",(_bstr_t)m_ID);m_pRecordset->PutCollect("姓名",(_bstr_t)m_Name);m_pRecordset->PutCollect("性别",(_bstr_t)m_Sex);m_pRecordset->PutCollect("学号",(_bstr_t)m_StuID);m_pRecordset->Update();ExitConnect();}catch(...){MessageBox("操作失败");return;}MessageBox("修改成功");m_Grid.DeleteAllItems();AddToGrid();
双击删除按钮写入
OnInitADOConn();_bstr_t sql;sql="select * from 表1";m_pRecordset.CreateInstance(__uuidof(Recordset));m_pRecordset->Open(sql,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);long pos=m_Grid.GetSelectionMark();try{m_pRecordset->Move((long)pos,vtMissing);m_pRecordset->Delete(adAffectCurrent);m_pRecordset->Update();ExitConnect();}catch(...){MessageBox("操作失败");return;}MessageBox("删除成功");m_Grid.DeleteAllItems();AddToGrid();
双击清除按钮写入
m_ID="";m_Name="";m_Sex="";m_StuID="";UpdateData(FALSE);
写函数AddToGrid
void CMDBDlg::AddToGrid(void)
{OnInitADOConn();//设置查询字符串_bstr_t bstrSQL ="select * from 表1 order by 编号 desc";//创建记录集指针对象实例m_pRecordset.CreateInstance(__uuidof(Recordset));//打开记录集m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);while(!m_pRecordset->adoEOF){m_Grid.InsertItem(0,"");m_Grid.SetItemText(0,0,(char*)(_bstr_t)m_pRecordset->GetCollect("编号"));m_Grid.SetItemText(0,1,(char*)(_bstr_t)m_pRecordset->GetCollect("姓名"));m_Grid.SetItemText(0,2,(char*)(_bstr_t)m_pRecordset->GetCollect("性别"));m_Grid.SetItemText(0,3,(char*)(_bstr_t)m_pRecordset->GetCollect("学历"));//将记录集指针移动到下一条记录m_pRecordset->MoveNext();}//断开数据库连接ExitConnect();
}
写函数oninitadoconn exitconnect
void CMDBDlg::OnInitADOConn(void)
{try{//创建连接对象实例m_pConnection.CreateInstance("ADODB.Connection");TCHAR pszFileName[MAX_PATH]; GetModuleFileName(NULL,pszFileName,MAX_PATH); CString psFileName; psFileName=pszFileName;psFileName=psFileName.Left(psFileName.ReverseFind('\\')); CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)};uid=;pwd=;DBQ=";strConnect+=psFileName;strConnect+="\\shujuku.mdb;";//使用Open方法连接数据库 m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown);//AfxMessageBox("数据库连接成功!");}catch(_com_error e){AfxMessageBox(e.Description());}
}void CMDBDlg::ExitConnect(void)
{if(m_pRecordset!=NULL)m_pRecordset->Close();m_pConnection->Close();
}
在对话框.cpp初始化函数中添加代码
m_Grid.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE|LVS_EX_GRIDLINES);m_Grid.InsertColumn(0,"编号",LVCFMT_LEFT,110,0);m_Grid.InsertColumn(1,"姓名",LVCFMT_LEFT,110,1);m_Grid.InsertColumn(2,"性别",LVCFMT_LEFT,110,2);m_Grid.InsertColumn(3,"学号",LVCFMT_LEFT,110,3);AddToGrid();
7.编译运行。
MFC ado操作mdb数据库相关推荐
- MFC+ODBC操作Access数据库pdf版
<MFC+ODBC操作Access数据库pdf版> 下载地址: 网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731370.html
- ado连接oracle数据库帮助类,MFC ADO连接Oracle12c数据库 类库文件
//--------查询示例 start-------- std::string sql = "select * from username"; adoreader=ado.Exe ...
- mfc连接oracle12c,MFC ADO连接Oracle12c数据库 类库文件
Stdafx.h Stdafx.h libado.h libado.h libado.cpp libado.cpp 参考网址如下:http://www.cnblogs.com/livewithnore ...
- VC通过ADO操作Access2007数据库
VC通过ADO操作Access2007数据库 (一)查询表是否存在 1. 修改Access2007权限 (1) "开始"标签,右击"所有表",选择"导 ...
- C#操作MDB数据库
C#操作MDB数据库,包括创建mdb文件,打开连接,读取mdb数据以及存储数据,从mdb数据库中获取表信息以及表字段.表数据信息 using System; using System.Collecti ...
- C#操作mdb数据库文件
C#操作mdb数据库文件 源码如下: namespace CSharpWindowsFormsApplication1 {public partial class Form1 : Form{publi ...
- 直接通过ADO操作Access数据库(修改版)
自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序.关于OLE DB和ADO的其它详细情况,读者可以自行查阅相关书籍或MSDN,这里就不一一说明了.让我们直接步入主题:如何掌握 ...
- C#编程学习51:操作MDB数据库
首先导入需要的命名空间 using System.Data.OleDb; 然后在界面上添加dataGridView控件和相关按钮 功能点1:将数据库中的数据显示在界面的dataGridView控件上 ...
- MFC,ADO方式实现数据库操作
参考: MSDN数据访问编程 (MFC/ATL): https://msdn.microsoft.com/zh-cn/library/kd4ck1tt.aspx?f=255&MSPPError ...
最新文章
- MongoDB学习笔记(入门)
- 数据分析师必看:5大概率分布,你了解多少?
- 努力就要晒出来,13周年订阅专栏送图书/T恤晒单集结号!!!
- 不同函数之间的跳转setjmp和longjmp
- 链表c的经典实现(一)
- 华为笔记本搭载鸿蒙系统,华为MatePad Pro2入网!预装鸿蒙系统 搭载麒麟9000
- Python 3.6学习笔记(一)
- linux操作系统权限详解,Linux权限详解
- python模块学习之glob模块
- 电脑计算器的快捷键_牛!这份金蝶财务软件使用手册+超全快捷键汇总送你,财务收好...
- eclipes创建一个web项目web.xml不能自动更新的原因(web.xml和@WebServlet的作用)
- python怎么学比较有技巧_学python必须知道的30个技巧
- 快解析:管家婆C9异地访问解决方案
- 通过crontab定时执行shell脚本教程
- jsp+ssm计算机毕业设计学校缴费系统【附源码】
- 网页打印与标准纸张换算 px与cm换算
- GIT常见问题及命令指南
- VBA代码助手,代码库收藏管理工具,代码对齐,破解Excel工程密码,设置隐藏模块
- 西门子PC ADAPTER USB A2无法连接PLC的坑
- js 混合排序(同时存在数字、字母、汉字等)
热门文章
- 计算机视觉:图片的灰度处理和颜色反转
- vue3使用vite+setup+ts写一个初级前端项目
- 什么是c/c++运行时库
- 电磁场与电磁波(二、电磁场的基本规律)
- arcgis android gif,一种基于动态地图符号的移动GIS可视化方法与流程
- 使用SuperMap iDesktopX数据迁移工具迁移地图文档和符号
- stata三天写论文!截面工具变量空间计量模型实战
- html5 报名页面,h5报名页性能优化总结
- 【ArcGIS Pro微课1000例】0022:基于DEM进行流域分析生成流域图
- 股票数据API接口合集:腾讯股票接口、麦蕊智数股票接口、和讯网股票接口、新浪股票接口、雪球股票数据、网易股票数据