MFC 数据库编程 odbc.docx
- 文档编号:2403491
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:102
- 大小:1.38MB
MFC 数据库编程 odbc.docx
《MFC 数据库编程 odbc.docx》由会员分享,可在线阅读,更多相关《MFC 数据库编程 odbc.docx(102页珍藏版)》请在冰豆网上搜索。
MFC数据库编程odbc
第12章数据库编程
数据库(database)是存储在计算机里的结构化数据的集合,可以分为关系、层次和网络三种类型,通常由数据库管理系统(DBMS=DataBaseManagementSystem)软件(如Oracle、DB2、SQLServer等)对数据库进行管理,应用程序通过(标准)编程接口(如ODBC/JDBC、DAO/ADO.NET、DOM/SAX等)来访问数据库,参见图12-1。
图12-1数据库应用系统结构
VisualStudio为程序员提供了多种数据库编程的接口和类库,传统上是采用VC的MFC进行ODBC、DAO和ADO编程,现在则一般采用C#和VB进行ADO.NET的Web应用编程。
12.1数据库与编程接口
关系型数据库可以视为结构变量的集合,有专用的系统RDBMS进行管理,通过标准的查询语言SQL进行操作。
微软平台中有多种数据库编程接口可供使用,早期常用ODBC和DAO,现在则多为ADO.NET。
12.1.1数据库与DBMS
数据库(DataBase,DB)是一种记录(record)或数据的集合。
数据库的结构按一定的数据模型来组织,最常用的是关系模型(relationalmodel),其它还有层次模型(hierarchicalmodel)和网络模型(networkmodel)。
DBMS(DataBaseManagementSystem,数据库管理系统)是用来维护数据库的软件。
数据库模型决定访问数据库的查询语言。
但是,DBMS的大量内部操作则是独立于数据模型的,它们取决于诸如性能(performance)、并发性(concurrency)、完整性(integrity)和从硬件故障中恢复等管理因素。
在这些方面,不同的产品之间存在很大差异。
早期的计算机数据存储在穿孔卡片和磁带上,后来有了磁盘的文件系统,然后才是数据库管理系统。
DBMS所用的各种数据库模型中,最初是网络和层次型数据库的强势,后来是关系数据库一统天下,然后又时兴面向对象的数据库,现在热门的则是XML这种层次型数据库。
最早的DBMS出现在1960年代,先驱者之一是(图灵奖获得者)CharlesBachman,他设计了首批DBMS之一IDS(IntegratedDataStore,集成数据存储,1960年通用电气GE公司)及其后续版本IDMS(IntegratedDatabaseManagementSystem,集成数据库管理系统,1971年推出,可在IBM大型机上运行),因其高性能,曾被业界广泛使用。
1.三种数据库模型
依据数据组织的方式,可以将数据库划分成如下三种模型:
●网络型——典型的网络数据库模型是(COBOL语言的开发者)CODASYL(ConferenceonDataSystemsLanguages,数据系统语言协会)下属的DBTG(DataBaseTaskGroup,数据库工作组),在CharlesBachman思想的基础上开发的,于1969年发布了网络数据库模型语言规范——通常称为Codasyl数据模型。
上面提到的IDS和IDMS就是网络型数据库管理系统。
●层次型——层次模型将数据组织成
(一)父(多)子关系的树状结构,IBM公司于1968年推出的IMS(InformationManagementSystem,信息管理系统,由VernWatts主持开发)就是一种层次型数据库管理系统,它在1970~1980年代占DBMS的统治地位。
现在十分热门的XML数据库也属于层次模型。
●关系型——关系数据库模型(relationaldatabasemodel)最早由IBM公司的EdgarF.Codd于1969年提出,但最初并没有受到足够的重视,例如IBM于1970年代开发的SystemR也只是一个研究原型。
只是到了1980年代后,关系数据库才异军突起,并迅速独霸天下。
主流的商用关系数据库管理系统(RDBMS=RelationalDBMS)有Oracle、DB2、SQLServer和MySQL等。
网络模型可真实反映现实世界中,事物之间所存在的错综复杂的网状相互关系(如人际关系)。
层次模型可以看成是网络模型的子集或特例(如家族谱系),多个层次模型可以组成一个网路模型。
关系模型反映的则是事物间的链接或二元关系(如父子关系、夫妻关系等),简单且高效。
层次和网络模型可以用多个二元关系来表示。
2.关系数据库模型
关系数据库由表示二元关系的实体——表(table)所组成,表中的列(column)称为字段(field)、行(row)称为记录(record)。
如:
表12-1学生信息表
元数据→
学号
姓名
性别
年龄
身高
电话
记录
→
001
张三
男
20
1.80
12345678
→
002
李四
女
18
1.61
23456789
→
003
王五
男
21
1.72
34567890
↑
↑
↑
↑
↑
↑
字段
以程序员的观点,可以将关系数据库看成是特定结构变量的数组,数据库中的字段或列对应于结构中的字段,而数据库中的记录或行则可以看成是结构变量的一个个具体取值。
如:
typedefstruct{
intnum;//?
wchar_tname[5];
wchar_tsex;
intage;
floatstature;
intphone;//?
}StInfo;
StInfost;
st.num=004;
st.name[0]=L'马';
st.name[1]=L'六';
st.name[2]=0;
st.sex=L'男';
st.age=19;
st.stature=1.68;
st.phone=45678901;
在编程中还用游标(cursor)来表示表中的当前记录、用事务(transaction)来表示封装在一起的一组表的变化(可以解决数据库的完整性问题)。
虽然用户可以自己编写程序来控制数据库文件的访问,但RDBMS能给我们带来许多便利,如:
●使用标准的文件格式——如含单个表的dBASE/Xbase的DBF(DataBaseFile数据库文件)、单个文件可含数据库的所有表和索引的MicrosoftAccess的MDB(Microsoft[Access]DataBase微软[访问]数据库)文件
●索引文件访问——所有DBMS都包含非常高效的索引访问例程,避免(为了使用关键字来访问记录)用户自己编写二叉树等文件访问程序的麻烦
●数据完整性保护——专业DBMS大多含有对数据的保护例程,如在对含一系列变化的事务处理过程中,若不能处理整个事务,则会回滚以恢复事务处理前的原始状态
●多用户访问控制——大多数DBMS都提供记录加锁机制,以防止多个用户同时使用时的相互干扰。
一些多用户DBMS采用C/S模型,其他采用P2P模式,都可以控制对共享文件的访问
3.商用RDBMS
最早的商用关系型数据库管理系统是甲骨文(Oracle)公司于1979年推出的Oracle(神谕,预言)和IBM公司于1983年推出的DB2。
首个成功的微机(包括PC)上的RDBMS是C.WayneRatliff于1978年在(美国)国家航空和宇宙航行局NASA的喷气推进实验室JPL开发的dBase,它在DOS时代占统治地位。
它最初叫Vulcan,1980年代初被Ashton-Tate公司购买后,才改名为dBase。
1991年Ashton-Tate公司被Borland公司收购。
dBase有许多变种,如狐狸软件公司于1984年推出的FoxBASE,后来改名为FoxPro。
1992年被微软公司合并后,又改名为VisualFoxPro。
其它变种还有Arago、Force、dbFast、dbXL、Quicksilver、Clipper、Xbase++、FlagShip、Recital、CodeBase、MultiBase和Harbour/xHarbour等,它们一般被统称xBase。
PC上的另一个出名的RDBMS是AnsaSoftware公司的RichardSchwartz和RobertShostak于1985年开发的Paradox(悖论),1987年9月被Borland公司收购,1992年推出了其Windows版。
Corel公司于1990年代中从Borland公司获得了Paradox,并于1997年发布了CorelParadox8,它还将Paradox集成到其WordPerfectOffice专业版套件中。
曾经重要的大型关系数据库还有Informix软件公司于1985年推出的Informix(2001年4月被IBM收购)和Sybase公司于1987年开发的SQLServer(1988年它与微软合作为IBM开发SQLServerforOS/2,1993年在合作协议终止后,微软推出了自己的SQLServertoWindowsNT)。
现在非常热门的开源Web数据库MySQL也是一种RDBMS,它是由瑞典的MySQLAB公司于1995年5月23日开始推出的,2008年2月26日MySQLAB成为Sun的子公司。
目前绝大多数数据库都为关系型数据库,对应的管理软件为关系型数据库管理系统RDBMS。
目前主流的RDBMS有:
●甲骨文公司的Oracle
●IBM公司的DB2(和Informix)
●微软公司的SQLServer(和VisualFoxPro、Access、Excel)
●MySQLAB公司的MySQL
常用数据库文件的扩展名见表12-2:
表12-2数据库文件的扩展名
Access
dBase
Excel
FoxPro
Paradox
SQLServer
*.mdb
*.dbf
*.xls
*.dbf
*.db
*.mdf、*.sdf
4.SQL
SQL(StructuredQueryLanguage,结构化查询语言)(官方读作[ɛskju:
'ɛl],也读作['si:
kwəl])为关系数据库的通用查询语言,最初是由IBM公司SanJose实验室的DonaldD.Chamberlin和RaymondF.Boyce于1972年为SystemR关系数据库设计的。
1)标准
SQL于1986年和1987年分别成为美国国家标准学会ANSI和国际标准化组织ISO标准——SQL-86(SQL-87),在1989年、1992年、1999年、2003年和2006年又多次对其进行了修订——SQL-89、SQL-92(SQL2)、SQL:
1999(SQL3)、SQL:
2003和SQL:
2006(ISO/IEC9075)。
下面是当前最新的ISO/IEC9075标准系列:
●ISO/IEC9075-1:
2003(Ed.2)Informationtechnology--Databaselanguages--SQL--Part1:
Framework(SQL/Framework),信息科学——数据库语言——SQL——第1部分:
框架(SQL/框架)
●ISO/IEC9075-2:
2003(Ed.2)Informationtechnology--Databaselanguages--SQL--Part2:
Foundation(SQL/Foundation),信息科学——数据库语言——SQL——第2部分:
基础(SQL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 数据库编程 odbc 数据库 编程
![提示](https://static.bdocx.com/images/bang_tan.gif)