VisualC++教程ppt课件 第8章.ppt_第1页
VisualC++教程ppt课件 第8章.ppt_第2页
VisualC++教程ppt课件 第8章.ppt_第3页
VisualC++教程ppt课件 第8章.ppt_第4页
VisualC++教程ppt课件 第8章.ppt_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、8.1.1. 数据模型,数据库管理系统是管理数据库的系统,它按一定的数据模型组织数据。,学生基本信息表(student)及其表结构,8.1.1. 数据模型,课程信息表(course)及其表结构,学生课程成绩表(score)及其表结构,8.1.2. Visual C+对数据库的支持,Visual C+为用户提供了ODBC(Open Database Connectivity,开放数据库连接) 、DAO(Data Access Objects,数据访问对象)及OLE DB(OLE Data Base,OLE数据库)三种数据库方式,使用户的应用程序与特定的数据管理系统(DBMS)脱离开来。,DBC提

2、供了应用程序接口(API),使得任何一个数据库都可以通过ODBC驱动器与指定的DBMS相联。,DAO类似于用Access或Visual Basic编写的数据库应用程序,它使用Jet数据库引擎形成一系列的数据访问对象:数据库对象、表和查询对象、记录集对象等。,OLE DB试图提供一种统一的数据访问接口,并能处理除了标准关系型数据库中的数据之外,还能处理包括邮件数据、Web上的文本或图形、目录服务(Directory Services)以及主机系统中的IMS和VSAM数据。,ADO(ActiveX Data Objects)是较为先进的数据库访问技术,它是Microsoft为最新和最强大的数据访问

3、范例OLE DB而设计的,是一个便于使用的应用程序层接口。,8.2.1. MFC 的ODBC编程过程,1. 构造数据库,数据库表与表之间的关系构成了一个数据库。,学生课程成绩表(score)及其表结构,8.2.1. MFC 的ODBC编程过程,2. 创建ODBC数据源,Windows 2000的管理工具,ODBC数据源管理器,8.2.1. MFC 的ODBC编程过程,3. 在MFC AppWizard中选择数据源,(1)用MFC AppWizard(exe)创建一个单文档应用程序Ex_ODBC。,(2)在向导的第2步对话框中加入数据库的支持,如图所示。,(3)选中“数据库查看使用文件支持”项,

4、单击Data Source按钮,弹出“Database Options”对话框,从中选择ODBC的数据源“Database Example For VC+”,如图示。,8.2.1. MFC 的ODBC编程过程,(4) 保留其他默认选项,单击OK按钮,从中选择要使用的表score。,(5) 单击OK按钮,又回到了向导的第2步对话框。,(6) 单击完成按钮。,(7) 编译并运行,结果如图所示。,8.2.1. MFC 的ODBC编程过程,4. 设计浏览记录界面,按照图所示的布局,为表单对话框资源模板添加控件。,8.2.1. MFC 的ODBC编程过程,(2)按快捷键Ctrl+W,弹出MFC Clas

5、sWizard对话框,切换到Member Variables页面,在Class name框中选择CEx_ODBCView,为上述控件添加相关联的数据成员。例如,双击IDC_STUNO,在弹出的“Add Member Variable”对话框中的成员变量下拉列表中选择要添加的成员变量名m_pSet-m_studentno,选择后,控件变量的类型将自动设置,如图所示。,8.2.1. MFC 的ODBC编程过程,(3)按照上一步骤的方法,为上表所示的其他控件依次添加相关联的成员变量。需要说明的是,控件变量的范围和大小应与数据表中的字段一一对应。,8.2.1. MFC 的ODBC编程过程,(4) 编译

6、运行并测试,结果如图所示。,8.2.2. ODBC数据表更新,(1) 按快捷键Ctrl+W,打开MFC ClassWizard对话框,切换到“Member Variables”页面。,(2) 在“Class name”的下拉列表中选择“CEx_ODBCSet”,此时MFC ClassWizard对话框的Update Columns和Bind All按钮被激活,如图。,(3)单击Update Columns按钮,又弹出前面的“Database Options”对话框,选择ODBC数据源“Database Example For VC+”。,8.2.2. ODBC数据表更新,(4) 单击OK按钮,

7、弹出如图所示的“Select Database Tables”对话框,从中选择要使用的表。,(5)单击OK按钮,又回到MFC ClassWizard界面,如图所示。,(6) 单击Bind All按钮,MFC Wizard将自动为字段落添加相关联的变量。在按Bind All按钮绑定前最好将已有的字段关联变量删除,以保证数据表字段名更改或删除后与变量绑定的正确性。,8.2.3. MFC的ODBC类,1. 动态行集和快照集,CRecordSet类对象提供了从数据源中提取出表的记录集,并提供了两种操作形式:动态行集(Dynasets)和快照集(Snapshots)。,2. 查询记录,使用CRecord

8、Set类的成员变量m_strFilter、m_strSort和成员函数Open可以对表进行记录的查询和排序。,(1) 打开Ex_ODBC应用程序的表单资源,按图所示的布局添加控件,添加的编辑框ID号设为IDC_EDIT_QUERY,“查询”按钮的ID号设为IDC_BUTTON_QUERY。,8.2.3. MFC的ODBC类,(2) 打开MFC ClassWizard对话框,为控件IDC_EDIT_QUERY添加关联变量m_strQuery。,(3)在CEx_ODBCView类中添加按钮控件IDC_BUTTON_QUERY的BN_CLICKED消息映射,并在映射函数中添加代码:,(4) 编译运行

9、并测试 ,如图.,8.2.3. MFC的ODBC类,m_pSet-AddNew(); / 在表的末尾增加新记录 m_pSet-SetFieldNull( / 刷新记录集,这在快照集方式下是必须的,增加记录是使用AddNew函数,但要求数据库必须是以“可增加”的方式打开的。下面的代码是在表的末尾增加新记录:,3. 增加记录,8.2.3. MFC的ODBC类,m_pSet-Edit(); / 修改当前记录 m_pSet-m_name=刘向东;/ 修改当前记录字段值 . m_pSet-Update(); / 将修改结果存入数据库 m_pSet-Requery();,4. 删除记录,5. 修改记录,可

10、以直接使用CRecordSet:Delete函数来删除记录。,函数CRecordSet:Edit可以用来修改记录,如:,6. 撤消操作,如果用户在进行增加或者修改记录后,希望放弃当前操作,则在调用CRecordSet:Update()函数之前调用CRecordSet:Move(AFX_MOVE_REFRESH)来撤消操作,便可恢复在增加或修改操作之前的当前记录。,8.3.1 显示记录总数和当前记录号,static UINT indicators = ID_SEPARATOR, / 第一个信息行窗格 ID_SEPARATOR, / 第二个信息行窗格 ID_INDICATOR_CAPS, ID_I

11、NDICATOR_NUM, ID_INDICATOR_SCRL, ;,打开应用程序Ex_ODBC。,(2) 在MainFrm.cpp文件中,向原来的indicators数组添加一个元素,用来在状态栏上增加一个窗格,修改的结果如下:,8.3.1 显示记录总数和当前记录号,BOOL CEx_ODBCView:OnCommand(WPARAM wParam, LPARAM lParam) CString str; CMainFrame* pFrame = (CMainFrame*)AfxGetApp()-m_pMainWnd; / 获得主框架窗口的指针 CStatusBar* pStatus = ,

12、(3) MFC 用ClassWizard为CEx_ODBCView类添加OnCommand消息处理函数,并添加下列代码:,8.3.1 显示记录总数和当前记录号,void CEx_ODBCView:OnInitialUpdate() m_pSet = ,(4) 在CEx_ODBCView的OnInitialUpdate函数处添加下列代码:,8.3.1 显示记录总数和当前记录号,(5) 在Ex_ODBCView.cpp文件的开始处增加下列语句:,(6) 将MainFrm.h文件中的保护型变量m_wndStatusBar变成公共变量。,(7) 编译运行并测试,结果如图所示。,8.3.2. 编 辑 记

13、 录,m_pSet-AddNew();/ 在表的末尾增加新记录 UpdateData(TRUE);/ 将控件中的数据传给字段数据成员 m_pSet-Update();/ 将新记录存入数据库 m_pSet-MoveLast(); / 将当前记录位置定位到最后一个记录 UpdateData(FALSE);/ 将字段数据成员的数据传给控件,即在控件中显示,CRecordset类为用户提供了编辑记录所需要的成员函数,但在编程时应注意控件与字段数据成员的相互影响。,下面的代码是用来增加一条记录:,8.3.3. 字 段 操 作,struct CODBCFieldInfo CString m_strName

14、;/ 字段名 SWORD m_nSQLType;/ 字段的SQL数据类型 UDWORD m_nPrecision;/ 字段的文本大小或数据大小 SWORD m_nScale;/ 字段的小数点位数 SWORD m_nNullability;/ 字段接受空值(NULL)能力 ;,CRecordSet类中的成员变量m_nFields (用于保存数据表的字段个数)和成员函数GetODBCFieldInfo及GetFieldValue可以简化多字段的访问操作。,8.3.3. 字 段 操 作,定义新的CRecordSet派生类,Ex_Field运行结果,8.3.4. 多 表 处 理,数据库中表与表之间往往

15、存在着一定的关系,例如要显示一个学生的课程成绩信息,信息包括学号、姓名、课程号、课程所属专业、课程名称、课程类别、开课学期、课时数、学分、成绩,则要涉及到前面的学生课程成绩表(score)、课程表以及学生基本信息表。,8.3.4. 多表处理,1. 创建切换窗口,2. 添加记录集类,3. 完善左边视图CStudentTreeView类代码,4. 完善右边视图CEx_StudentView类代码,5. 完善两视图的关联代码,Ex_Student第二次运行结果,Ex_Student第一次运行结果,8.4.1. 使用MSFlexGrid控件,Microsoft FlexGrid (MSFlexGrid

16、) 控件可以显示网格数据,也可以对其进行操作。它提供了高度灵活的网格排序、合并和格式设置功能,网格中可以包含字符串和图片。利用MSFlexGrid可以将某个表的所有记录显示。,1. 将控件的类添加到项目中,8.4.1. 使用MSFlexGrid控件,“Confirm Classes”对话框,ActiveX控件列表,8.4.1. 使用MSFlexGrid控件,2. 向对话框添加MSFlexGrid控件,3. 修改MSFlexGrid控件属性,8.4.1. 使用MSFlexGrid控件,4. 编程控制,保留默认的属性及其控件标识IDC_MSFLEXGRID1。,8.4.2 RemoteData和D

17、BGrid控件,1. RemoteData控件,打开前面的单文档应用程序Ex_ODBC。,(2) 打开Ex_ODBC表单资源IDD_EX_ODBC_FORM。,(3) 在表单资源中右击鼠标,从弹出的快捷菜单中选择“Insert Active Control”命令,出现如图所示“插入 Active 控件”对话框。,(4) 在对话框的控件列表中选择RemoteData控件,单击确定按钮,RemoteData控件就添加到表单资源中,调整其大小和位置。,8.4.2 RemoteData和DBGrid控件,(5) 右击该控件,从弹出的菜单中选择“属性”或“Properties RemoteDataCtl

18、 Object”命令,打开该控件的属性对话框。,(6) 在“Control(控件)”页面中,从“DataSource”的下拉列表中选择所需要的数据源名 “Database Example For VC+”。,(7) 在“SQL”编辑框中键入SQL操作语句“SELECT * FROM score ORDER BY studentno”是检索学生课程成绩表score的所有记录,并按学号排序。,(8) 将RemoteData控件属性对话框切换到All页面,单击CursorDriver选项,在右侧的组合框中将其属性选择“1-ODBC cursor”。,8.4.2 RemoteData和DBGrid控件

19、,2. 添加并设置DBGrid控件,(1)打开Ex_ODBC表单资源IDD_EX_ODBC_FORM。,(2) 在表单资源中右击鼠标,从弹出的快捷菜单中选择“Insert Active Control”命令,在弹出的 “插入 Active 控件”对话框中找到要添加的DBGrid控件,结果如图。,8.4.2 RemoteData和DBGrid控件,(3)调整添加的DBGrid控件的大小和位置,打开该控件的属性对话框,将数据源(DataRource)设置为RemoteData控件IDC_REMOTEDATACTL如图。,(4) 在对话框编辑器的控件布局栏上,单击测试工具按钮.,(5) 编译运行并测

20、试。,8.5 使用ADO操作数据库,ADO 是目前在Windows环境中比较流行的客户端数据库编程技术。,8.5 使用ADO操作数据库,BOOL CEx_ADOView:PreCreateWindow(CREATESTRUCT ,创建基于CListView类的单文档应用程序,(1) 用MFC AppWizard(exe)创建一个默认的单文档应用程序Ex_ADO,但在向导的第6步将CEx_ADOView的基类由默认的CView选择为CListView类。,(2) 在CEx_ADOView:PreCreateWindow函数添加下列代码,用来设置列表视图内嵌列表控件的风格:,8.5 使用ADO操作

21、数据库,void CEx_ADOView:OnInitialUpdate() CListView:OnInitialUpdate(); CListCtrl ,(3) 在CEx_ADOView:OnInitialUpdate函数中添加下列代码,用来创建列表标题头,8.5 使用ADO操作数据库,BOOL CStuInfoDlg:OnInitDialog() CDialog:OnInitDialog(); / 设置单选按钮初始选中状态 if (!m_bMale) CheckRadioButton(IDC_RADIO_MALE, IDC_RADIO_FEMALE, IDC_RADIO_FEMALE);

22、 else CheckRadioButton(IDC_RADIO_MALE, IDC_RADIO_FEMALE, IDC_RADIO_MALE); / 这里对专业组合框进行初如化 m_comboSpecial.AddString( 机械工程及其自动化 ); m_comboSpecial.AddString( 电气工程及其自动化 ); m_comboSpecial.AddString( 计算机科学 ); if (m_strSpecial.IsEmpty() m_strSpecial = 计算机科学; / 对出生年月初始化 if (m_tBirth = 0 ) m_tBirth = CTime(1986, 1, 1, 0, 0, 0); UpdateData(FALSE); return TRUE; / return TRUE unless you set the focus to a control ,修改CStuInfoDlg:OnInitDialog函数中的代码:,2. 复制对话框并修改代码,8.5 使用ADO操作数据库,3. 添加对ADO的支持,#endif / _AFX_NO_AFXCMN_SUPPORT #import C:Program FilesCommon FilesSystemADOmsado15.dll no_namespa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论