第6章 数据库应用

  • 格式:doc
  • 大小:1009.50 KB
  • 文档页数:37

第6章数据库应用数据库技术是当今最为流行的计算机技术之一,几乎所有的程序开发环境中都封装了数据库设计功能。

Visual C++也不例外,它提供了时下最新潮、最通用的ODBC(开放的数据库连接)和DAO(数据访问对象)技术。

用户可以通过操纵MFC库中相应的类,在自己的应用程序中轻轻松松地设计、使用数据库。

6、1 数据库、DBMS和SQL1、数据库数据库是数据的集合,它由一个或多个表组成。

每一个表中都存储了对一类对象的数据描述。

一个典型的数据库表的形式如表6.1所示。

表的每一行描述了对象的一个属性,如姓名、性别、年龄、出生年月日等,而表的每一列则是对一个对象的具体描述。

一般将表中的一行称作记录(record)或行(row),将表的每一列称作字段(field)或列(column)。

表6. 1 数据库表的形式学号姓名性别出生年月专业班级051161 李娜女1988-8 计算机科学05-1051162 赵文学男1990-2 计算机科学05-1051163 程才男1988-5 计算机科学05-1051164 丁玲女1989-6 计算机科学05-1若数据库由多个相关的表组成,则可利用关键字段将这些表联系起来。

例如表6.1中,可以将学号作为一个关键字段,如果数据库中还有一个学生成绩表并且也有学号字段,则可以通过学号这个关键字段将2个表联系起来。

2、DBMS(数据库管理系统)DBMS是一套程序,用来定义、管理和处理数据库与应用程序之间的联系,例如FoxPro、Access、Sybase、MS SQL Server等都是DBMS。

图6.1说明了用户、DBMS和数据库三者的关系。

图6.1 用户、DBMS、数据库三者的关系3、SQL(Structured Query Language结构化查询语言)作为用在DBMS中访问和操作的语言,是专门用来处理关系数据库的基于文本的语言。

SQL(结构化查询语言)语句分为2类:一类是DDL(Data Definition Language数据定义语句),它用于创建表、索引等,另一类是DML(Data Manipulation Language,数据操作语言)语句,这些语句用于读取数据、更新数据和执行其他类似操作的语句。

6、2 MFC的ODBC编程技术ODBC是英文“Open Database Connectivity”的缩写,就是“开放数据库连接”。

ODBC 为各种类型的数据库管理系统提供了统一的编成接口,程序员可以轻松自如地在应用程序中进行跨数据库的操作,再也不用种类繁多的数据库接口而发愁了。

用MFC AppWizard(exe)创建一个数据库处理的SDI/MDI程序,只需在向导的第二步中选中“Database view without file support”或“Database view with filesupport”即可。

当然,在创建之前预先构造好一个数据库,然后进行ODBC的数据源定义。

用MFC AppWizard使用ODBC数据库的一般过程是:(1)用Access或其它数据库工具构造一个数据库;(2)在Windows中为刚才构造的数据库定义一个ODBC数据源;(3)在创建数据库处理的文档应用程序向导中选择数据源;(4)设计界面,并使控件与数据表字段关联。

6.2.1 设计数据库数据库表与表之间的关系构成了一个数据库。

这里我们用Microsoft Access创建一个数据库:学生专业信息.mdb,其中包含2个表:学生信息表和专业信息表,如表6.2和6.3所示:表6. 2 学生信息表(一)序号字段名称数据类型字段大小小数位字段含义1 stuid 文本 6 学号2 name 文本8 姓名3 sex 文本 2 性别4 profcode 文本 6 专业代号(二)stuid(学号)name(姓名)sex(性别)profcode(专业代号)050101 郝娟女102001050102 高山男102002050103 张平男102003050104 丁月女102004表6.3 专业信息表(一)序号字段名称数据类型字段大小小数位字段含义1 profcode 文本 6 专业代号2 profname 文本12 专业名称3 stuyears 数字整型自动学制(二)Profcode(专业代号) profname(专业名称) stuyears(学制)102001 计算机科学与技术 4102002 软件技术 3102003 计算机软件 4102004 图形图象制作 3102005 动漫设计与制作 3下面我们开始用Access2003设计数据库:(1)开机正常屏幕状态→开始→程序→Microsoft Office→Microsoft Office Access 2003→新建文件→空数据库→文件名处写:学生专业信息→点右边的创建→新建→设计视图→确定→出现表,你按表6.2(一)即下面数据敲入即可:字段名称数据类型字段大小说明stuid 文本 6 学号name 文本8 姓名sex 文本 2 性别profcode 文本 6 专业代号(2)关闭此表→提问:你是否保存对表1的设计更改?→是→表名写:学生信息表→是→便在数据库中见到了:学生信息表。

(3)双击:学生信息表,出现设计视图表,之后按上面的表6.2(二)即下面的数据敲入数据:学号姓名性别专业代号050101 郝娟女102001050102 高阳男102002050103 张平男102003050104 丁月女102004数据敲完之后->关闭,至此表6.2学生信息表,就完成了。

(4)接着再点本界面上面菜单的“新建”→“设计视图”→确定,按表6.3(一)敲入下面的数据即可。

字段名称数据类型字段大小说明profcode 文本 6 专业代号profname 文本12 专业名称stuyears 数字整型学制关闭此表→提问:你是否保存对表1的设计更改?→是→表名写:专业信息表→是→便在数据库中见到了:专业信息表。

(5)双击:专业信息表,出现设计视图表,之后你按表6.3(二)即下面的数据敲入即可:专业代号专业名称学制102001 计算机科学 4102002 软件技术 3102003 计算机软件 4102004 图形图像制作 3102005 动漫设计与制作 3数据敲完后->关闭,至此表6.3专业信息表,就完成了。

缺省时它们都保存在“我的文档”里。

6.2.2 创建ODBC的数据源用户安装Visual C++的同时也会装上ODBC程序,但它不是出现在Visual C++程序组中,而是出现在系统的“控制面板”中,如图6.2.1所示。

图6.2.1控制面板图6.2.2 ODBC数据源管理器桌面左下角→开始→设置→控制面板→性能和维护->管理工具→双击ODBC图标,进入ODBC数据源管理器,在这里用户可以设置ODBC数据源的一些信息,其中的“用户DSN”页面是用户定义自己在本地计算机使用的数据源名(DNS),如图6.2.2所示。

(1)单击[添加]按钮,弹出有一驱动程序列表的“创建新数据源”对话框。

(2)在该对话框中选择要添加用户数据源的驱动程序,这里选择“Microsoft Access Driver”。

如图6.2.3所示,单击[完成]按钮,进入特定驱动程序的ODBC Microsoft Access 安装对话框。

(3)在ODBC Microsoft Access 安装对话框中,单击[选则]按钮将前面创建的数据库:学生专业信息,将其调入,见图6.2.4所示。

图6.2.3 创建新数据源对话框图6.2.4 单击“选择”按钮将已创建的数据库调入(4)单击[确定]按钮,给刚才创建的用户数据源起名:“数据库应用”,写在数据源名处,见图6.2.5所示,在说明处写:“数据库应用实例”。

单击[确定]便使其添加在“ODBC 数据源管理器”的“用户数据源”列表中,如图6.2.6所示->确定->退出ODBC 数据源。

图6.2.5 ODBC Access 安装对话框 图6.2.6 用户数据源列表6.2.3 在MFC AppWizard 中选择数据源用MFC AppWizard(exe),创建一个支持数据库的SDI/MDI 应用程序,过程如下:(1)用MFC AppWizard(exe)创建一个单文档应用程序名为:数据库(2)在向导的第2步对话框中加入数据库的支持,如图6.2.7所示。

在该对话框中用户可以选择对数据库支持程序,其中各选项的区别如表6.4所示。

(3)选中“Database view with file support ”(数据库查看使用文件支持)项,单击[Data Source]按钮,弹出“Database Options ”对话框。

图6.2.7 向导的第2步选择数据库支持 图6.2.8 Database Options 对话框(4)从中选择你刚才起好名的ODBC 的数据源“数据库应用”,如图6.2.8所示。

单击[OK]按钮,弹出“Select Database Table ”对话框,从中选择要使用的表:学生信息表,见图6.2.9。

(5)单击[OK]按钮,又回到了向导的第2步对话框,保留默认设置,单击[Finish]按钮。

(6)编译运行结果如图6.2.10所示。

说 明:MFC AppWizard 创建的“数据库”应用程序与一般默认的单文档应用程序相比较,在类结构方面, 有如下几点不同:1)添加了一个CMySet 类,它与上述过程中所选择的数据表xs 进行数据绑定,也就是说,CMySet 对象的操作实质上对数据表进行操作。

2)将CMyView 类的基类设置成CRecordView ,由于CRecordView 的基类是CFormView ,因此它需要与之相关联的表单资源。

3)在CMyView 类中添加了一个全局的CMySet 对象指针变量m_pSet ,目的是在表单视图和记录集之间建立联系,使得记录集中的查询结果能够很容易地在表单视图上显示出来。

图6.2.9 “Select Database Table ”对话框 图6.2.10:程序运行结果表6.4 MFC 支持数据库的不同选择 选项 创建的视图类 创建的文档类 None 从CView 派生 支持文档的常用操作,并在“文件”选单中有“新建”、“打开”、“保存”、“另存为”等命令Header files only 从CView 派生 除了在StdAfx.h 文件中添加了#include <afxdb.h>语句外,其余与“None ”选项相同Database view with file support 从CRecordView 派生 不支持文档的常用操作,也就是说,创建的文档类不能进行序列化,且在“文件”选单中没有“新建”等文档操作命令,但用户可在用户视图中使用CRecordset 类处理数据库Database view with file support 从CRecordView 派生 全面支持文档操作和数据库操作6.2.4 设计浏览记录界面在“数据库”应用程序中,MFC 为用户自动创建了用于浏览数据表记录的工具按钮和相应的“记录”选单项。