MFC数据库编程

上传人:仙*** 文档编号:243964845 上传时间:2024-10-01 格式:PPT 页数:49 大小:1.60MB
返回 下载 相关 举报
MFC数据库编程_第1页
第1页 / 共49页
MFC数据库编程_第2页
第2页 / 共49页
MFC数据库编程_第3页
第3页 / 共49页
点击查看更多>>
资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,MFC,数据库编程,授 课,:,东南大学 郑雪清,_,mail:,VC+,语言程序设计,数据库编程,Visual C+6.0,为用户提供了,ODBC、DAO,及,OLE DB,三种数据库方式。这三种方式中最简单也最常用的是,ODBC,,因此我们只介绍,MFC,的,ODBC,编程方法和技巧,基于,OLE DB,的,ADO(ActiveX Data Objects,ActiveX,数据对象,),技术,由同学们自己根据需要自己掌握。,一、,MFC ODBC,数据库概述,ODBC,是一种使用,SQL,的程序设计接口,使用,ODBC,能使用户编写数据库应用程序变得容易简单,避免了与数据源相连接的复杂性。在,Visual C+,中,,MFC,的,ODBC,数据库类,CDatabase,(,数据库类,)、,CRecordSet,(,记录集类,)和,CRecordView,(,记录视图类,),可为用户管理数据库提供了切实可行的解决方案。,数据库基本概念,1,.,数据库和,DBMS,数据库是指以一定的组织形式存放在计算机存储介质上的相互关联的数据的集合。例如,把一个学校的教师、学生和课程等数据有序地组织起来,存储在计算机磁盘上,就构成了一个数据库。,为了有效地管理数据库,常常需要一些数据库管理系统,(,DBMS),为用户提供对数据库操作的各种命令、工具及方法,包括数据库的建立和记录的输入、修改、检索、显示、删除和统计等。流行的,DBMS,都提供了一个,SQL,接口。,2.,SQL,作为用来在,DBMS,中访问和操作的语言,,SQL(,结构化查询语言,),语句分为两类:,DDL(Data Definition Language,,数据定义语言,),语句,它是用来创建表、索引等;,DML(Data Manipulation Language,,数据操作语言,),语句,这些语句是用来读取数据、更新数据和执行其他类似操作的语句。,3.,ODBC、DAO,和,OLE DB,ODBC,提供了应用程序接口,(,API),,使得任何一个数据库都可以通过,ODBC,驱动器与指定的,DBMS,相联。用户的程序就可以通过调用,ODBC,驱动管理器中相应的驱动程序达到管理数据库的目的。作为,Microsoft Windows Open Standards Architecture(WOSA,Windows,开放式服务体系结构,),的主要组成部分,,ODBC,一直沿用至今。,DAO,类似于用,Microsoft Access,或,Microsoft Visual Basic,编写的数据库应用程序,它使用,Jet,数据库引擎形成一系列的数据访问对象。,OLE DB,试图提供一种统一的数据访问接口,并能处理除了标准关系型数据库中的数据之外,还能处理包括邮件数据、,Web,上的文本或图形、目录服务,(,Directory Services),以及主机系统中的,IMS,和,VSAM,数据。,OLE DB,提供一个数据库编程,COM(,组件对象模型,),接口,使得数据的使用者,(,应用程序,),可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型。,4,.,ADO,ADO,是目前在,Windows,环境中比较流行的客户端数据库编程技术。它是,Microsoft,为最新和最强大的数据访问范例,OLE DB,而设计的,是一个便于使用的应用程序层接口。,ADO,使用户应用程序能够通过“,OLE DB,提供者”访问和操作数据库服务器中的数据。由于它兼具有强大的数据处理功能,(,处理各种不同类型的数据源、分布式的数据处理等等,),和极其简单、易用的编程接口,因而得到了广泛的应用。,ADO,技术有许多优点,能够访问包括关系数据库、非关系数据库及所有的文件系统,还支持各种,B/S,与基于,Web,的应用程序,具有远程数据服务,RDS(Remote Data Service),的特性,是远程数据存取的发展方向。,二、,MFC ODBC,编程,用,MFC AppWizard,使用,ODBC,数据库的一般过程是:,用,Access,或其他数据库工具构造一个数据库;,在,Windows,中为刚才构造的数据库定义一个,ODBC,数据源;,在创建数据库处理的文档应用程序向导中选择数据源;,设计界面,并使控件与数据表字段关联。,1,.,构造数据库,用,Microsoft Access,创建一个数据库学生成绩,.,mdb,,,其中包含学生表,S、,课程表,C,和成绩表,SC,,数据表的结构和内容见例题。,有关该部分内容交给学生自学。,2,.,创建,ODBC,数据源,Windows,中的,ODBC,组件是出现在系统的“控制面板”管理工具中,如下图所示。,双击,ODBC,图标,(,在图中已圈定,),,进入,ODBC,数据源管理器。用户可以设置,ODBC,数据源的一些信息。,这里用什么数据源名,后面要选择该名。,三、,MFC ODBC,向导过程,3.在,MFC AppWizard,中选择数据源,用,MFC AppWizard,可以容易地创建一个支持数据库的文档应用程序。,用,MFC AppWizard,创建一个单文档应用程序,Ex2。,在向导的第,2,步对话框中加入数据库的支持,如图所示。在该对话框中用户可以选择对数据库支持程序。,选中“数据库查看使用文件支持”项,使用前面定义的,ODBC,数据源名,。,保留其他默认选项,单击,OK,按钮,弹出如图所示的“,Select Database Tables”,对话框,从中选择要使用的表,S。,选择数据表。,单击,OK,按钮,又回到了向导的第,2,步对话框。,单击,完成,按钮。开发环境自动打开表单视图,CEx2View,的对话框资源模板,IDD_Ex2_FORM,以及相应的对话框编辑器。,编译并运行,结果如图所示。,4.,设计浏览记录界面,在上面的,Ex2,中,,MFC,为用户自动创建了用于浏览数据表记录的工具按钮和相应的“记录”菜单项。若用户选择这些浏览记录命令,系统会自动调用相应的函数来移动数据表的当前位置。,若在表单视图,CEx2View,中添加控件并与表的字段相关联,就可以根据表的当前记录位置显示相应的数据。其步骤如下:,按照图所示的布局,为表单对话框资源模板添加表所示的控件。,添加的控件,ID,号,标题,其他属性,编辑框(学号),IDC_SNO,编辑框(姓名),IDC_SNAME,编辑框(专业),IDC_DEPART,编辑框(成绩),IDC_GRADE,按快捷键,Ctrl+W,,弹出,MFC,ClassWizard,对话框,切换到,Member Variables,页面,在,Class name,框中选择,CEx2View,,为上述控件添加相关联的数据成员。与以往添加控件变量不同的是,这里添加的控件变量都是由系统自动定义的,并与数据库表字段相关联的。例如,双击,IDC_SNO,,在弹出的“,Add Member Variable”,对话框中的成员变量下拉列表中选择要添加的成员变量名,m_,pSet,-m_SNO,,选择后,控件变量的类型将自动设置,如图所示。,按照上一步骤的方法,为表所示的其他控件依次添加相关联的成员变量。,需要注意的是,控件变量的范围和大小应与数据表中的字段一一对应。结果如图所示。,控件,ID,号,变量名,IDC_SNO,IDC_SNAME,IDC_DEPART,IDC_GRADE,M_,pSet,-m_SNO,M_,pSet,-m_SNAME,M_,pSet,-m_DEPART,M_,pSet,-m_GRADE,编译运行并测试,结果如图所示。,四、,ODBC,应用编程,1.数据表绑定更新,按快捷键,Ctrl+W,,打开,MFC,ClassWizard,对话框,切换到“,Member Variables”,页面。,在“,Class name”,的下拉列表中选择“,CEx2Set”,,此时,MFC,ClassWizard,对话框的,Update Columns,和,Bind All,按钮被激活,如图所示。,单击,Update Columns,按钮,又弹出前面的“,Database Options”,对话框,选择,ODBC,数据源“,Database Example For VC+”,,如图所示。,单击,OK,按钮,弹出如图所示的“,Select Database Tables”,对话框,从中选择要使用的表。,单击,OK,按钮,又回到,MFC,ClassWizard,界面,如图所示。,单击,Bind All,按钮,,MFC Wizard,将自动为字段落添加相关联的变量。,2.使用,MFC,所供的,ODBC,类:,CDatabase,(,数据库类,)、,CRecordSet,(,记录集类,)和,CRecordView,(,可视记录集类,),。,CDatabase,类用来提供对数据源的连接,通过它可以对数据源进行操作;,CRecordView,类用来控制并显示数据库记录,该视图是直接连到一个,CRecordSet,对象的表单视图。但在实际应用过程中,,CRecordSet,类是用户最关心的,因为它为用户提供了对表记录进行操作的许多功能,如查询记录、添加记录、删除记录、修改记录等,并能直接为数据源中的表映射一个,CRecordSet,类对象,方便用户的操作。,CRecordSet,类对象提供了从数据源中提取出表的记录集,并提供了两种操作形式:动态行集,(,Dynasets,),和快照集,(,Snapshots)。,动态行集能与其他用户所做的更改保持同步,快照集则是数据的一个静态视图。,3.查询记录,使用,CRecordSet,类的成员变量,m_,strFilter,、m_,strSort,和成员函数,Open,可以对表进行记录的查询和排序。在,Ex2,的表单中添加一个编辑框和一个,查询,按钮,单击,查询,按钮,将按编辑框中的学号内容对数据表进行查询,并将查找到的记录显示在前面添加的控件中。具体过程如下:,打开,Ex2,应用程序的表单资源,按图所示的布局添加控件,其中添加的编辑框,ID,号设为,IDC_SNO_QUERY,“,查询”按钮的,ID,号设为,IDC_BUTTON_QUERY。,用,MFC,ClassWizard,为控件,IDC_SNO_QUERY,添加关联变量,m_,strQuery,。,在,Message Maps,页面的,Cex2View,类中添加按钮控件,IDC_BUTTON_QUERY,的,BN_CLICKED,消息映射,并在映射函数中添加下列代码:,void CEx2View:,OnButtonQuery,(),UpdateData,();,m_,strQuery,.,TrimLeft,();,if(m_,strQuery,.,IsEmpty,(),MessageBox,(,要查询的学号不能为空!,);,return;,if(m_,pSet,-,IsOpen,(),m_,pSet,-Close();/,如果记录集打开,则先关闭,m_,pSet,-m_,strFilter,.Format,(“SNO=%s,m_,strQuery,);,/SNO,是,S,表的字段名,用来指定查询条件,m_,pSet,-m_,strSort,=DEPART;,/course,是,score,表的字段名,用来按,course,字段从小到大排序,m_,pSet,-Open();/,打开记录集,if(!m_,pSet,-,IsEOF,()/,如果打开记录集有记录,UpdateData,(FALSE);/,自动更新表单中控件显示的内容,else,MessageBox,(,没有查到你要找的学号记录!,);,代码中,,m_,strFilter,和,m_,strSort,是,CRecordSet,的成员变量,用来执行条件查询和结果排序。其中,,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!