《第19章通向数据库的桥梁ODBC、ADO和OLEDB.ppt》由会员分享,可在线阅读,更多相关《第19章通向数据库的桥梁ODBC、ADO和OLEDB.ppt(24页珍藏版)》请在三一办公上搜索。
1、第19章 通向数据库的桥梁ODBC、ADO和OLE DB,信息化是计算机产生和发展的原动力,信息化不仅仅表现于计算,还表现于存储,存储海量的数据必然涉及到数据管理的问题,关系型数据库是管理海量数据的一种成功解决方式,本章将讲述数据库的基本理论以及使用Visual C+进行的数据库连接方式,本章的主要内容如下。数据库开发技术简介:读者可以学到数据库理论的基础知识,了解到SQL语言等数据库核心理论。ODBC数据库链接:读者可以学到在Visual C+6.0中使用ODBC进行数据库链接。ADO数据库链接:读者可以学到在Visual C+6.0中使用ADO进行数据库链接。OLE DB数据连接:读者可以
2、学到OLE DB的相关理论知识。,19.1 数据库开发技术简介,涉及数据库设计的应用软件非常广泛,在现代的信息化管理系统中,已经离不开数据库了。数据库就是存放数据的仓库,而在数据库中,管理者可以通过数据库管理系统来管理数据,主要包括对数据的增加、删除、修改等,以及对数据进行统计分析、报表制作等。,19.1.1 当今常用的几种数据库管理系统DBMS,计算机的实质是信息符号处理机器,所谓的信息不仅仅包括文字内容,它应该包括:文字、图片、音频和视频等具有信息意义的符号或记录。从计算机诞生之日起,计算机就离不开这些数据,最初的数据管理系统是“文件系统”,即将数据以文件的方式存放,以文件列表的方式存储管
3、理,后来为了更方便地进行数据管理,开发了数据库管理系统(DBMS)。本文出现的与数据库理论相关的基本概念有:数据:文字、图片、音频和视频等具有信息意义的符号或记录。数据库:也称为数据仓库,是存放数据的物理的或逻辑的设备介质。数据库管理系统(DBMS):管理数据库的专用管理软件。数据库管理员(DBA):具有管理数据库权限的人,而DBA是分多个层次的,不同的DBA可能还具有从属关系。,19.1.2 关系代数与数据库SQL语言简介,数据库可以分为3类:关系型数据库、树型数据库和网状数据库。当今主流的数据库都是属于“关系型数据库”,所谓关系型数据库就是数据库里面管理的数据就是一张二维表,每一行代表一个
4、“元组”,也就是一条记录,“元组”是数据库中的基本数据单位,每一列代表一个“属性”,同一列的性质是一样的,如表19.1所示。,19.1.3 数据库SQL语言分类,数据库SQL语言也是比较简单的,主要分为4类:SQL命令、SQL运算符、SQL从句和SQL的集合函数。1.SQL命令包括以下几种:SELECT命令:用于在数据库中查找满足特定条件的记录,形成特定的查询结果集。这是所有SQL语句中最常使用的SQL命令。CREATE命令:用于创建数据库的特定对象,如表、索引、视图。DROP命令:用于删除数据库中的特定对象。ALTER命令:用于调整数据库对象的结构。INSERT命令:用于在数据库中向特定表添
5、加一行记录。DELETE命令:用于删除数据库中表的某些记录。UPDATE命令:用于修改数据库中表的某些记录。2SQL从句SQL使用从句来指定查询条件,SQL从句包括以下几种类型:FROM从句:用于指定从其中选定记录的表的名称。WHERE从句:用于指定所选定记录必须满足的条件。GROUP BY从句:用于指定查询结果集按照特定的列分成不同的组。HAVING从句:用于说明每个组需要满足的条件,一般同GROUP BY从句一起使用。ORDER BY从句:用于指定查询结果集按照特定的列排序。3SQL运算符SQL使用的运算符主要有两类。(1)逻辑运算符:(2)比较运算符:4SQL的集合函数使用合计函数可以对
6、一组数据进行各种不同的统计,它返回用于一组记录的单一值。,19.1.4 使用SQL查询语言运行器,每个数据库管理系统都有自己的SQL查询语言运行器,如Access数据库,可以按照如下操作进行SQL查询语句的使用。,19.1.5 使用SQL查询技巧:投影和选择,使用SQL语句可以编写形式丰富的二维表查询语句,以下是SQL语句常用的一些范例:(1)投影。只显示所有学生的姓名:select 学生 from学生信息表;显示学生信息表中的全部内容:select*from学生信息表;(2)选择。选择学号为10001的学生的所有信息。select*from 学生信息表 where 学号=10001;wher
7、e子句后面跟的是条件表达式,该条件表达式与C+的不大一样,但逻辑运算肯定是相同的。假如需要选择语文成绩在80分以上的男同学的信息:select*from 学生信息表 where 语文成绩 10001 and 性别=男;,19.2 在Visual C+6.0中使用ODBC进行数据库链接,ODBC是Visual C+6.0集成开发环境中较常用的数据库链接方式,Visual C+6.0的应用程序向导为每个数据库的表生成一个Set类,通过Set类的对象来进行数据库的访问,ODBC是一种常用的数据库链接方式。,19.2.1 ODBC概述,ODBC(Open Database Connectivity)的
8、全称是开放数据库互连。一个使用ODBC进行开发的数据库访问应用程序并不直接依赖于数据库管理系统,也就是说应用程序不直接于DBMS打交道,无论是FoxPro、Access,MYSQL还是Oracle数据库,均可用ODBC API进行访问,而API是相对固定的,从而大大缩短了软件项目的开发周期,由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库,ODBC主要有两个类。1CDatabase类(数据库类)2CRecordSet类(数据集类),19.2.2 实现ODBC数据库操作的案例,【本小节示例参考:源代码C19myODBC】本实例将使用ODBC进行数据库连接,并通过单击按钮,将数据库中的
9、部分数据显示在对话框的列表控件中,使用ODBC进行数据库程序设计的步骤如下:,19.3 在Visual C+6.0中使用ADO进行数据库链接,ADO是微软开发的数据库访问中间件,它基于OLE DB数据源抽象出更方便的数据操作接口,它通过这些OLE DB服务提供者,ADO支持客户/服务器模式和基于Web的数据库应用。ADO可以说是最具备面向对象特征的数据库链接方式,它是基于对象的中间件,它将数据库访问操作抽象成为一个个对象,通过对这些对象的操作来完成数据库应用程序设计。ADO支持客户/服务器模式和基于Web的数据操作,尤其支持通过客户/服务器模式或者基于Web模式访问微软的SQL Server数
10、据库服务器。,19.3.1 ADO的优越性,对于数据库编程人员来说,ADO具有如下优越性:便于使用:当然,如果不方便,恐怕读者现在就看不到这种连接方式了。支持多种编程语言,包括Visual Basic、Java、C+、VBScript和JavaScript。支持任何的OLE DB服务器,ADO可以操作任何的OLE DB数据源。不损失任何OLE DB的功能,ADO支持C+编程人员操作底层的OLE DB接口。可扩展性,ADO能够通过提供者属性集合动态地表示指定的数据提供者,还支持COM的扩展数据类型。,19.3.2 ADO对象模型,ADO数据库链接中间件是基于对象的数据库访问技术,它将数据库链接步
11、骤分为定义对象并通过对象来解决一系列问题,ADO对象模型包括以下关键对象:(1)Connection对象(连接对象)。(2)Command对象(命令对象)。(3)Parameter对象(参数对象)。(4)Recordset对象(记录集对象)。,19.4 ADO数据库操作,使用数据库中间层(如ODBC或ADO)实际上就相当于在应用程序和数据库之间架设了一道桥梁。当然,架设桥梁只是手段,保证应用程序和数据库的交通顺畅才是目的,在ADO中实现对数据库进行操作,开发者只需要做一些额外工作即可,如为取得数据库记录集,应该先定义一个指向Recordset对象的指针:_RecordsetPtr m_pRec
12、ordset;/定义数据集对象并为其创建Recordset对象的实例:m_pRecordset.CreateInstance(ADODB.Recordset);/创建ADO数据集,19.4.1 利用Connection对象的Execute()方法执行SQL命令,Connection链接对象提供了执行SQL语句的方法,它就是Execute()函数,其原型如下所示:_RecordsetPtr Connection15:Execute(_bstr_t CommandText,VARIANT*RecordsAffected,long Options)/可以执行SQL语句的函数其中,Execute()方
13、法的参数是:CommandText:该参数表示SQL命令字符串。RecordsAffected:该参数表示命令影响的行数。Options:该参数表示CommandText参数中内容的类型,Options参数可以取以下值之一:(1)adCmdText:参数取值为adCmdText表示CommandText是文本命令。(2)adCmdTable:参数取值为adCmdTable表示CommandText是一个表名。(3)adCmdProc:参数取值为adCmdProc表示CommandText是一个存储过程。开发者可以这样使用Execute()方法:m_pRecordset=m_pConnectio
14、n-Execute(SELECT COUNT(*)FROM 学生信息,/执行SQL统计命令得到包含记录条数的记录集,19.4.2 利用Command对象来执行SQL命令,利用Command对象来执行SQL命令,实质上是使用Command对象的方法来进行数据库的操作命令传递,如代码示例19.4所示。,19.4.3 直接用Recordset对象进行查询取得记录集,直接用Recordset对象进行查询取得记录集常使用到Recordset对象的Open()方法,Open方法的原型如下:HRESULT Recordset15:Open(const _variant_t,19.4.4 使用ADO进行数据库
15、连接的案例,ADO数据库连接与ODBC类似,但也有自己的特点,它提供了更方便的连接函数,而且在不依赖于MFC的情况下,也很方便地使用各种数据库中间层的对象,只要提供连接数据库以及读写数据库按照以下顺序即可:(1)依次定义连接对象、数据集对象和命令对象。(2)使用连接对象的Open()函数通过传递连接字符串打开数据库。(3)编写SQL语句的字符串,并将字符串交给命令对象的Excute()函数执行。(4)读取、删除或修改数据库的内容。,19.5 OLE DB数据库操作模型,OLE DB由客户(Consumer,也称为应用程序)和服务器(Provider,又称为提供者程序)组成。客户是指任何一个使用
16、了OLE DB接口的系统或者应用程序,其中包括OLE DB本身,而服务器是指所有提供OLE DB接口的软件组件。,19.5.1 什么是OLE DB,OLE DB客户是使用数据的应用程序,它通过OLE DB接口对数据提供者的数据进行访问和控制。在大多数情况下,前端的数据库应用开发都属于客户程序的开发。OLE DB服务器是提供OLE DB接口的软件组件,根据提供的内容可以将服务器分成数据提供程序和服务器提供程序。数据提供程序拥有数据并将这些数据以表的形式存放,例如关系型DBMS、存储管理器、电子表格和ISAM数据库等。服务器提供程序不拥有数据,但是可以通过利用OLE DB接口建立一些提供服务的组件
17、。从某种意义上来说,服务组件既是客户又是服务器。对于一个完整的数据库应用程序来说,客户和数据提供程序都是必不可少的。然而服务提供程序却是可以省略的。当客户需要对数据库进行操作时,它并非直接对数据源发出指令,而是通过OLE接口与数据源进行交互,数据服务器从数据源取得所要查询的数据时,以表格的形式将其提供给接口,再由客户将数据从接口取出并使用。在这些操作中,客户和数据服务器都不必知道对方的具体应用,而只需要对接口进行操作,从而简化了程序设计。,19.5.2 OLE DB的组件构成,OLE DB的每一个组件其实是一个COM对象,每一个组件都分别输出一系列的接口。OLE DB由以下组件组成:(1)枚举
18、器。枚举器的作用是搜寻可用的数据源和其他的枚举器。使用枚举器一般通过搜寻注册表来发现相应的数据源。(2)数据源对象。数据源对象是指数据库文件或数据库管理系统提供的指向数据文件的接口。此对象中含有环境变量、连接信息、用户信息、用户口令等信息,使用数据源对象可以产生会话。(3)会话。会话是一次数据访问的时间持续,简单来说就是一次应用程序和数据库管理系统的会谈。(4)事务对象。事务对象用于管理数据库的事务,即一次增删改等事务操作。(5)命令对象。命令对象用于对数据源发送文本命令。(6)行集。行集和数据库表中的行是对应的,它们的区别在于行集是在内存中的概念,而数据库中的表是存放在硬盘上的。行集可以从会
19、话或者命令对象中产生,如命令对象将数据表中的部分信息检索出来,以行集的形式存放在内存中。行集对象可以完成更新、插入、删除等操作,完成之后必须将行集中的数据写回到数据库。(7)错误对象。错误对象中封装了访问数据提供程序时发生的错误,它可以由任何OLE DB对象的任何接口产生。错误对象中含有关于错误的附加信息,包括一个可选的定制错误对象,通过它也能够获得扩展的返回码和状态信息。,19.5.3 OLE DB在Visual C+中的使用案例,【本小节示例参考:源代码C19OLEDB】本实例将使用ODBC进行数据库连接,并通过单击“OLE DB显示数据”按钮,将数据库中的部分数据显示在对话框的列表控件中
20、,OLE DB在Visual C+中的使用与ODBC非常类似,也是使用数据集的概念,将数据库中的数据先导入到内存的数据集对象中,然后对数据对象进行下一步的操作,具体操作步骤如下:,19.6 小结,本章着重讲解数据库常用的连接方式,数据库连接具有一定的相似性,因此无需在不同的项目开发中反复开发数据库连接和操作代码模块,而应该使用常用的数据库连接以达到降低软件开发成本的目的。对于学习者而言,使用数据库连接,可以降低数据库应用程序的学习门槛,降低了数据操作的复杂性。通过本章的学习,读者应该掌握的内容如下:掌握数据库理论的基础知识,了解数据库的种类和常用的数据库管理系统,掌握基本的SQL语句的编写。掌
21、握在Visual C+6.0中使用ODBC进行数据库链接,并将数据库中的数据通过应用程序显示出来。掌握在Visual C+6.0中使用ADO进行数据库链接,熟记使用ADO进行数据库读取的编程步骤,并将数据库中的数据通过应用程序显示出来。了解OLE DB的相关理论知识,并将数据库中的数据通过应用程序显示出来。,本章习题,一、填空题1数据库中的数据可以是_、_或_等。2用来描述数据库表设计的常用模型是_。3在数据库查询等操作中,用于理论研究一般使用_,用于工程实践一般使用_。二、选择题1关于数据库及其数据库应用程序,以下说法正确的是()。A数据库表设计越详细越好,越多越好。B数据库是存储数据的仓库,而数据库应用程序则是读取和管理数据的逻辑模块。C数据库应用程序可以直接读取数据库,而无需账号和密码。D数据库管理系统和数据库是同一个概念。2以下哪个不是数据库链接方式()?AADOBOLE DBCODBCDCOM,