1、在头文件中导入ADO连接库

//导入ADO连接库
#import "C:\Program Files\Common Files\system\ado\msado15.dll" no_namespace rename("EOF","adoEof")
//定义变量
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;

2、初始化窗口时打开连接等

// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);           // 设置大图标SetIcon(m_hIcon, FALSE);        // 设置小图标// TODO:  在此添加额外的初始化代码
//初始化ADO COM
AfxOleInit();
//初始化列表控件
LV_COLUMN listColum;
TCHAR* listTitle[2] = { _T("学号"), _T("姓名") };//定义列的名称
int intColCx[2] = { 100, 120 };
listColum.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;//指定列表控件的样式
listColum.fmt = LVCFMT_LEFT;//左对齐
for (int i = 0; i < 2; i++)
{listColum.cx = intColCx[i];listColum.iSubItem = i;listColum.pszText = listTitle[i];m_list.InsertColumn(i, &listColum);
}
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT);//选中所有的行
m_pConnection.CreateInstance(__uuidof(Connection));//创建连接对象
//构建连接字符串
CString strConn = _T("Provider=Microsoft.ACE.OLEDB.12.0;;Data Source=C:\\Users\\admin\\Desktop\\DataBaseDome.mdb");
try{//打开Access数据库 的连接m_pConnection->Open((_bstr_t)strConn, _T(""), _T(""), adModeUnknown);//adModeUnknown 默认参数
}
catch(_com_error&e){AfxMessageBox((LPCTSTR)e.Description());m_pConnection = NULL;return TRUE;
}
catch (...)
{AfxMessageBox(_T("未知错误"));m_pConnection = NULL;return TRUE;
}
m_pRecordset.CreateInstance(__uuidof(Recordset));//创建记录集对象
GetDataSet();
return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE

3、加载数据

void CAdoMFcAADlg::GetDataSet()
{LPCTSTR lpSql = _T("select *from Student order by StudentID");m_pRecordset->Open((_variant_t)lpSql, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);if (m_pRecordset == NULL){AfxMessageBox(_T("读取数据记录发生错误"));return ;}m_list.DeleteAllItems();int nItem = 0;_variant_t id, name;//从数据读出的类型是_variant_tCString strID, strName;while (!m_pRecordset->adoEof){id = m_pRecordset->GetCollect(_T("StudentID"));name = m_pRecordset->GetCollect(_T("StudentName"));//转化为C++的类型strID.Format(_T("%d"), id.intVal);strName = (LPCTSTR)_bstr_t(name);//AfxMessageBox(strName);m_list.InsertItem(nItem, strID);m_list.SetItemText(nItem, 1, strName);m_list.SetItemData(nItem, id.intVal);nItem++;m_pRecordset->MoveNext();}m_pRecordset->Close();//关闭记录集
}

4、增加数据

void CAdoMFcAADlg::OnBnClickedBtnAdd()
{// TODO:  在此添加控件通知处理程序代码int nID = GetDlgItemInt(IDC_EDT_ID);CString strName;GetDlgItemText(IDC_EDT_NAME, strName);if (strName.GetLength()==0){AfxMessageBox(_T("学生姓名不能为空"));return;}if (nID<=0){AfxMessageBox(_T("学生学号不能为空"));}//检查学号是否重复//处理姓名中的单引号,避免受到sql注入strName.Replace(_T("'"), _T("''"));TCHAR szSql[1024] = { 0 };_stprintf(szSql, _T("insert into Student(StudentID,StudentName) values(%d,'%s')"),nID,(LPCTSTR)strName);ExcuteSql(szSql);GetDataSet();
}void CAdoMFcAADlg::ExcuteSql(LPCTSTR lpSql)
{_variant_t ra;//删除了多少行try{m_pConnection->Execute(lpSql, &ra, adCmdText);}catch (_com_error&e){AfxMessageBox((LPCTSTR)e.Description());}catch (...){AfxMessageBox(_T("执行sql 语句失败"));}//GetDataSet();
}

更改

void CAdoMFcAADlg::OnBnClickedBtnUpdata()
{// TODO:  在此添加控件通知处理程序代码int nIndex = m_list.GetSelectionMark();if (nIndex<0){return;}int nID = m_list.GetItemData(nIndex);int nNewID = GetDlgItemInt(IDC_EDT_ID);CString strNewName;GetDlgItemText(IDC_EDT_NAME, strNewName);if (strNewName.GetLength()==0||nNewID<=0){return;}strNewName.Replace(_T("'"),_T("''"));TCHAR szSql[1024] = { 0 };_stprintf(szSql, _T("update Student set StudentID=%d,StudentName='%s' where StudentID=%d"), nNewID, strNewName, nIndex);ExcuteSql(szSql);GetDataSet();
}

删除

void CAdoMFcAADlg::OnBnClickedBtnDeleteNow()
{// TODO:  在此添加控件通知处理程序代码int nIndex = m_list.GetSelectionMark();//选中第几行//如果没有选中  就返回if (nIndex<0){return;}int nID = m_list.GetItemData(nIndex);TCHAR szSql[1024] = { 0 };_stprintf(szSql,_T("delete from Student where StudentID=%d"),nID);ExcuteSql(szSql);//_variant_t ra;//删除了多少行//try{//   m_pConnection->Execute(szSql, &ra, adCmdText);//}//catch (_com_error&e)//{// AfxMessageBox((LPCTSTR)e.Description());//}//catch (...)//{//   AfxMessageBox(_T("执行sql Delete 语句失败"));//}GetDataSet();
}

MFC操作Access数据库相关推荐

  1. MFC+ODBC操作Access数据库pdf版

    <MFC+ODBC操作Access数据库pdf版> 下载地址: 网盘下载 转载于:https://www.cnblogs.com/long12365/p/9731370.html

  2. 直接通过ADO操作Access数据库(修改版)

    自身的OLE DB Privider,而且还可以应用所有的ODBC驱动程序.关于OLE DB和ADO的其它详细情况,读者可以自行查阅相关书籍或MSDN,这里就不一一说明了.让我们直接步入主题:如何掌握 ...

  3. C# 操作ACCESS数据库

    看到CSDN上不断兄弟姐妹提问关于c#操作Access的问题,于是本人利用闲暇将c#操作Access的方法加以总结,主要解决的问题有: 创建mdb 创建table 读取table内容 查询table中 ...

  4. python不可以操作access数据库_Python操作Access数据库基本操作步骤分析

    Python编程语言的出现,带给开发人员非常大的好处.我们可以利用这样一款功能强大的面向对象开源语言来轻松的实现许多特定功能需求.比如Python操作Access数据库的功能实现等等.在Python操 ...

  5. C#操作Access数据库

    本教程介绍了如何通过ADO.NET的OleDb相关类来操作Access数据库的相关步骤. 1     软件环境 开发平台:Microsoft Visual Studio 2010 数据库:Micros ...

  6. 一个封装了的ADO类,功能非常强大,并做了一个DEMO演示如何操作ACCESS数据库

    呵呵,说实在的,这个类俺是从外国论坛上下载的,自己研究了下如何使用并做了一个DEMO,演示如何操作ACCESS数据库.希望给那些没有接触数据库编程的初学者一点启发吧.有任何问题请及时与我联系^_^.程 ...

  7. golang odbc mysql_go语言通过odbc操作Access数据库的方法

    本文实例讲述了go语言通过odbc操作Access数据库的方法.分享给大家供大家参考.具体如下: 这里需要用到go-odbc库,下载地址为:https://github.com/weigj/go-od ...

  8. DELPHI中操作ACCESS数据库

    DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库) 以下代码在WIN2K,D6,MDAC2.6下测试通过, 编译好的程序在WIN98第二版无ACCESS环境下运行成功. //在之前u ...

  9. 转:关于ASP操作Access数据库时出现死锁.ldb的解决方法

    Asp操作Access数据库时出现死锁.ldb导致网站访问缓慢的问题描述 最近asp网站出现数据库错误,在ftp登陆后发现原来的后缀MDB文件多了一个后缀LDB文件,是自动被锁,在一天某个时间段内打不 ...

  10. Asp 操作Access数据库时出现死锁.ldb的解决方法

    问题: 最近经常用的asp网站"搬家"到一个昂贵的服务器时候,出现这个问题,访问后台时候,出现数据库错误的字样,在ftp登陆后发现原来的后缀MDB文件多了一个后缀LDB文件,百度搜 ...

最新文章

  1. 重大合同实为旧事 数据港信披被上交所问询
  2. 【安卓】基于SharedPreferences实现用户登录信息的存储
  3. java 仿百度文库源码_java开发_模仿百度文库_SWFTools_源码下载
  4. java 异步调用 shell_Java 实现异步调用
  5. Linux Ubuntu jdk(环境变量)配置
  6. linux中$@,$*,$0,$$,$?参数的含义
  7. (五)cobbler自定义系统安装
  8. 机器学习算法-09-深度学习、BP神经网络、Hopfield神经网络、基于数学原理的神经网络、径向基函数RBF(B站一条会说666的咸鱼)
  9. [Linux/Unix]常用命令
  10. vue导出Excel组件
  11. 菜鸟教程笔记:TypeScript
  12. python中shape错误_python中shape错误
  13. 花几十万推广系统?这家跨国物流企业告诉你大可不必!
  14. 面试整理:分享50道硬核Python编程题,面试前过一遍
  15. 计算机教师教学能手演讲,教学能手经验交流发言稿6篇
  16. Centos 查看 CPU 核数 和 型号 和 主频
  17. 【Windows、Git问题】detected dubious ownership in repository 问题解决
  18. 直击产业落地 | 飞桨重磅推出业界首个模型选型工具
  19. Markdown语法文档,Markdown教程,Markdown语法大全,
  20. python预测股票 keras_使用LSTM模型预测股价基于Keras

热门文章

  1. SWOT分析》思维导图,帮助你做好企业优势劣势分析图
  2. 单片机c语言1ms程序,51单片机c语言延时函数 Void delay 1ms(unsigned int ms){un
  3. 开关电源电压型与电流型控制
  4. TCP/IP协议号大全
  5. Hive面试题系列-连续登录问题1
  6. 9.郝斌C语言笔记——变量的作用域和存储方式
  7. 解决计算机主机与打印机共享打印机,HP M126A打印机共享打印机后必须得主机先打印一次后其他电脑才能打印问题的解决办法...
  8. 颜色列表(中英文名称,RGB HSV CMYK值)
  9. 【三维建模】基于MATLAB的立体图形三维建模仿真
  10. htlm5实习报告_web前端实习报告.doc