已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第13讲 数据库应用程序的开发,一 数据库基础知识,现有的数据库软件有很多,如大型数据库Oracle、SQL Server,小数据库Access等,都支持关系模型,数据库模型,层次模型 网状模型 关系模型 面向对象模型,二 ODBC的引用,ODBC(Open Database Connectivity):开放式数据库互连。它包含访问不同数据库的ODBC驱动程序。 所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是Oracle、SQL Server还是Access数据库,均可用ODBC API进行访问。 ODBC是一种接口,它是通过相应的各个数据库的ODBC驱动来访问各种数据库中的数据。使用ODBC,能够使应用程序独立于数据库的硬件环境,ODBC提供的API函数独立于数据库管理系统。,ODBC API :包含函数集合、错误代码的集合、标准的SQL语句集合,用来调用DBMS中的数据。 ODBC Driver Manager:管理ODBC驱动程序。是一个动态连接库文件(ODBC32.DLL) 加载ODBC驱动程序。 ODBC database drivers:由一个或是多个DLL构成,每种数据源与一个DLL相对应。 ODBC Administrator :这是一个ODBC控制台,用来管理不同的数据源。,ODBC的构成,MFC对ODBC的封装,三 访问数据库,建立ODBC数据源 在控制面板的管理工具中的ODBC数据源中建立数据源 连接数据源 使用CDatadase类 选择和处理记录 使用CDatadase的派生类CRecordset 数据库应用程序中的文档和视图 使用CFormView的派生类CRecordView,四 数据库应用程序中常用的类,1 CRecordView类,CRecordView对象就是用视图中的控件来显示数据库中的记录。 CRecordView类使用了动态数据交换(DDX)和数据库交换(RFX),在视图上的控件和数据源中的数据库进行数据交换。 应用程序向导生成CRecordView和CRecordset类,并和相应的数据源关联。,【例13-1】创建一个数据库应用程序,可以显示Access数据库表中的记录。,(1) 创建ODBC数据源 “控制面板” | “管理工具” | “数据源(ODBC)”,(2) 使用MFC向导生成一个单文档的ODBC项目,项目名:mydb 项目类型:MFC 模板:MFC应用程序 应用程序类型:单文档 生成类: CmydbApp CmydbDoc CmydbView CMainFrame CmydbSet,运行程序,(3) 编辑对话框,IDC_EDIT4,IDC_EDIT1,IDC_EDIT2,IDC_EDIT3,在“资源视图”中选择对话框: IDR_mydbTYPE 在对话框中添加控件,(4) 控件与字段名关联,在mydbView.cpp的DoDataExchange函数中加入下列代码,将对话框中编辑框和表中字段关联 void CmydbView:DoDataExchange(CDataExchange* pDX) CRecordView:DoDataExchange(pDX); DDX_FieldText(pDX, IDC_EDIT1, m_pSet-m_ID, m_pSet); DDX_FieldText(pDX, IDC_EDIT2, m_pSet-column1, m_pSet); DDX_FieldText(pDX, IDC_EDIT3, m_pSet-column2, m_pSet); DDX_FieldText(pDX, IDC_EDIT4, m_pSet-column3, m_pSet); ,字段名在mydbSet.h中声明,2 CRecordset类,为了能够处理各种的数据库,最好从类CRecordset派生出一个子类来。数据库从数据源读取数据后,可以做以下的工作: 翻阅所有的记录。 修改记录,设定锁定状态。 挑选有用的记录。 给数据库排序。 给定参数,让数据库在运行的时候自动选择数据。,【例13-2】在【例13-1】的基础上增加“删除一个记录”、“更新记录”和“清除域”、“添加新纪录”四个菜单项,并实现相应的操作。,1 加入菜单项,2 重载OnMove函数,在类视图中,选择CmydbView类,快捷菜单:“属性” | “重写”按钮 | 选择OnMove,BOOL CmybcView:OnMove(UINT nIDMoveCommand) switch(nIDMoveCommand) case ID_RECORD_PREV: m_pSet-MovePrev(); if(!m_pSet-IsBOF() break; case ID_RECORD_FIRST: m_pSet-MoveFirst(); break;,case ID_RECORD_NEXT: m_pSet-MoveNext(); if(!m_pSet-IsEOF() break; if(!m_pSet-CanScroll() m_pSet-SetFieldNull(NULL); /清空屏幕 break; case ID_RECORD_LAST: m_pSet-MoveLast(); break; default: ASSERT(FALSE); /异常情况 UpdateData(FALSE); /交换数据 return TRUE; ,3 “删除记录”菜单响应函数(COMMAND),void CmydbView:OnDelete() /删除记录 CRecordsetStatus m_cStatus; trym_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(); else m_pSet-MoveNext(); UpdateData(FALSE); ,4 “修改记录”菜单响应函数(COMMAND) void CmydbView:OnUpdate() m_pSet-Edit(); UpdateData(TRUE); if(m_pSet-CanUpdate() m_pSet-Update(); ,5 “清除域”菜单响应函数(COMMAND) void CmydbView:OnClear() m_pSet-SetFieldNull(NULL); UpdateData(FALSE); ,在数据库中增加记录步骤: 通过AddNew函数来添加记录 用Update函数保存新记录 调用Requery函数更新记录,把输入控制滚动到数据库中的最后一条记录上 刷新窗口,6 “添加记录”菜单响应函数(COMMAND) void CmydbView:OnAdd() CRecordset * pSet=OnGetRecordset(); m_pSet-AddNew(); /添加一个新记录 UpdateData(TRUE); if (m_pSet-CanUpdate() m_pSet-Update(); /保存新的记录 m_pSet-Requery(); /重新定位 m_pSet-MoveLast(); /游标移到最后一条记录 UpdateData(FALSE); /更新表单 ,【例13-3】在【例13-2】的基础上增加浏览记录的功能。 新建对话框,在对话框中添加ActiveX控件,用来浏览表中全部记录。,(1) 添加ActiveX控件 选择“工具” | “选择工具箱选项” | “COM组件”, 选择Microsoft ADO Data Control 6.0, Microsoft DataGrid Control 6.0 (2) 建立文件数据源(.dsn) “控制面板” | “管理工具” | “数据源(ODBC) ” | “文件(DSN)” |“添加文件(dsn)”| “连接SQL Server数据库”,ActiveX控件: ActiveX是Microsoft对于一系列面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。 ActiveX 控件是一种可重用的软件组件,通过使用 ActiveX控件,可以在应用程序、开发工具中加入特殊的功能。,选“资源视图”,选择Menu|IDR_MAINFRAME ,进入菜单编辑器,在“记录”下拉菜单的后面增加菜单项“浏览记录”,ID:ID_BROWSE,1 添加菜单项,选“资源视图”,选择对话框,快捷菜单:插入Dialog。在创建完对话框资源之后,需要生成一个相关的对话框类。选中对话框,快捷菜单:添加类,在Name中填入“CDlg”即可。,2 添加对话框,设置ADO控件属性: ID:IDC_ADODC1 ConnectionString: FILE NAME= F:vc+2008mydb.dsn RecordSource: XSB Visible: False 设置DataGrid控件属性 ID: IDC_DATAGRID1 Caption:学生信息 Data source: IDC_ADODC1 AllowAddNew:False AllowDelete:False AllowUpdate:False,3 在对话框中添加控件,ADO控件 IDC_ADODC1,Grid控件 IDC_DATA
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2010年西藏中考英语真题及解析
- 2026年扬州艺术考试题目及答案
- 深度解析(2026)《GBT 30128-2013纺织品 负离子发生量的检测和评价》
- 2026年美国地理考试题及答案
- 《研学旅游服务提供管理规范》
- 深度解析(2026)《GBT 29852-2013光伏电池用硅材料中P、As、Sb施主杂质含量的二次离子质谱测量方法》
- 冲刺阶段要换思路!高三高考备考推进会校长直言:锚定命题新方向精准施策备高考
- 《DLT 1290-2013直接空冷机组真空严密性试验方法》(2026年)合规红线与避坑实操手册
- 2026年生鲜冷链运输服务协议
- 广东省云浮市罗定市2024-2025学年六年级下学期英语期中测试试卷(4月)(含答案)
- 2026浙江杭州萧山水务有限公司春季招聘10人笔试备考试题及答案详解
- 2026浙江省担保集团社会招聘3人笔试备考试题及答案解析
- 2026年及未来5年市场数据中国酒精行业发展运行现状及发展趋势预测报告
- 2025旅游景区质量等级评分细则
- (广东二模)广东省2026年4月高三高考模拟测试(二)地理试卷(含答案)
- 2026年智慧树答案【人工智能原理与技术】智慧树网课章节考前冲刺练习题附参考答案详解(夺分金卷)
- 高考物理押计算大题《力学三大观点的综合应用计算题》含答案
- 茂名石油行业分析报告
- 10.2《在马克思墓前的讲话》教学课件2025-2026学年统编版高中语文必修下册
- 2025年河北联考音乐真题及答案
- 高技术企业技术创新的组织模式与激励机制
评论
0/150
提交评论