MFC关于ODBC数据库连接步骤及相关类说明

上传人:az****29 文档编号:40704203 上传时间:2018-05-27 格式:DOC 页数:6 大小:249.50KB
返回 下载 相关 举报
MFC关于ODBC数据库连接步骤及相关类说明_第1页
第1页 / 共6页
MFC关于ODBC数据库连接步骤及相关类说明_第2页
第2页 / 共6页
MFC关于ODBC数据库连接步骤及相关类说明_第3页
第3页 / 共6页
MFC关于ODBC数据库连接步骤及相关类说明_第4页
第4页 / 共6页
MFC关于ODBC数据库连接步骤及相关类说明_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《MFC关于ODBC数据库连接步骤及相关类说明》由会员分享,可在线阅读,更多相关《MFC关于ODBC数据库连接步骤及相关类说明(6页珍藏版)》请在金锄头文库上搜索。

1、MFC 关于关于 ODBC 数据库连接数据库连接 2011-05-04 13:17:08 一、数据库应用程序中常用的几个类1。CrecordView 类一个 CRecordView 对象就是用一个视图中的控件来显示数据库中的记录。CRecordView 类使用了动态数据交换(DDX)和数据库交换(RFX) ,在视图上的控件和数据源中的数 据库中进行数据交换。 AppWizard 生成 CRecordView 和 CRecordset 类,并和相应的数据 源关联。2。CRecordset 类为了能够处理各种的数据库,最好从类 CRecordset 派生出一个子类来。数据库从数据源 读取数据后,可

2、以做以下的工作: 翻阅所有的记录。 修改记录,设定锁定状态。挑选有 用的记录。给数据库排序。给定参数,让数据库在运行的时候自动选择数据。3。CDatabase 类 CDatabase 在 afxdb.h 中定义。其对象是用来连接一个数据源的。为了使用 CDatabase 对 象,需调用构造函数,并调用 OpenEx 或是 Open 函数,这将会打开一个连接。当构造一个 CDatabase 类完成后,可以向 CRecordset 类的对象传递这个 CDatabase 类的指针。连接数 据源结束时,必须用 Close 函数关闭这个对象。4。RFX5。CDBExceptionCDBException

3、 是用来处理从其它 ODBC 类传过来的异常情况的。这个类一般是和关 键字 CATCH 连用的。同样的用户也可以用全局函数 AfxThrowDBException 抛出一个异常 情况 二、实例步骤1。用 AppWizard 来生成一个单文档的 ODBC 工程文件用 ClassWizard 给相应的 Edit Box 连接变量,注意,在 Add Member Variable 对话框中的下 拉组合框中已经有了相应表中的字段,只要选中相应的字段就可以了 添加菜单响应函数 void CODBCView:OnDeleteRecord() /删除记录 CRecordsetStatus m_cStatus

4、;try m_pSet-Delete(); catch(CDBException* m_pEx) AfxMessageBox(m_pEx-m_strError);m_pEx-Delete();m_pSet-MoveFirst(); /若失败,将记录指针移到首记录UpdateData(FALSE);return;m_pSet-GetStatus(m_cStatus);if(m_cStatus.m_lCurrentRecord=0)m_pSet-MoveFirst(); /删除了最后一个记录elsem_pSet-MoveNext();UpdateData(FALSE); void CODBCVie

5、w:OnUpdateDeleteRecord(CCmdUI* pCmdUI) /删除后的刷新 pCmdUI-Enable(!m_pSet-IsEOF(); void CODBCView:OnUpdateRecord() m_pSet-Edit();UpdateData(TRUE);if(m_pSet-CanUpdate()m_pSet-Update(); void CODBCView:OnUpdateUpdateRecord(CCmdUI* pCmdUI) /刷新记录集pCmdUI-Enable(!m_pSet-IsEOF(); void CODBCView:OnClearDomain() /

6、清除域 m_pSet-SetFieldNull(NULL);UpdateData(FALSE); long CODBCSet:GetMaxID() MoveLast(); /移到最后一条记录return m_ID; /返回该 ID 值 void CODBCView:OnAddRecord() CRecordset * pSet=OnGetRecordset();/获取指向数据库的指针if(pSet-CanUpdate()if(!UpdateData() return;pSet-Update();long m_lNewID=m_pSet-GetMaxID()+1;/获取新的 ID 值m_pSet

7、-AddNew(); /添加一个新记录m_pSet-m_ID=m_lNewID; /设置新的 ID 标识m_pSet-Update(); /保存新的记录m_pSet-Requery(); /刷新数据库m_pSet-MoveLast(); /游标移到最后一条记录UpdateData(FALSE); /更新表单 void CODBCView:OnMoveToRecord() CMoveToRecord dlgMoveTo; /创建 CMoveToRecord 类的对象实例if(dlgMoveTo.DoModal()=IDOK) CRecordset *pSet=OnGetRecordset();/

8、指向数据库记录的指针if(pSet-CanUpdate() if(!UpdateData() return;pSet-Update();pSet-SetAbsolutePosition(dlgMoveTo.m_RecordID);/设置新的位置UpdateData(FALSE); /更新表单 由于 CRecordset 类的对象或从 CRecordset 类继承的对象都拥有一个 m_strSort 成员,它决 定了对记录的排序,在“记录”菜单中增加菜单项“按价格排序”,(ID_SORT_PRICE),并为 它映射 COMMAND 消息处理函数 OnSortPrice()。 void CODBC

9、View:OnSortPrice() m_pSet-Close(); /关闭数据库m_pSet-m_strSort=“价格”; /指定排序字段m_pSet-Open(); /再次打开数据库UpdateData(FALSE); /更新已经排序过的记录 由于用了 CRecordset 类的成员 m_strSort,因此对数据库记录的排序不用进行太多的代码干 预。 最后在工具栏中增加 Sort 工具按钮,实现菜单项“按价格排序”的功能。 假设按“作者”字段进行查询,为菜单项“按作者查找”所映射的 COMMAND 消息处理函数 代码如下: void CODBCView:OnSearch() DoFil

10、ter(“作者“); void CODBCView:DoFilter(CString col) CSearchDlg dlg; int result=dlg.DoModal(); if(result=IDOK) CString str=col+“=“+dlg.m_Edit_Search+“; /接收查询字符串m_pSet-Close(); /关闭原来的表单m_pSet-m_strFilter=str; /将查询条件赋给过滤器m_pSet-Open(); /打开经过过滤的表单int recCount=m_pSet-GetRecordCount(); /计算满足条件的记录数 if(recCount=0) /如果没有找到相关记录 MessageBox(“No matching records.”); m_pSet-Close(); /关闭表单m_pSet-m_strFilter; /将过滤结果给过滤器m_pSet-Open(); /据过滤结果打开表单(什么都没找到) UpdateData(FALSE); /不论任何情况,都更新表单

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 教育学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号