《Delphi数据库开发工具.docx》由会员分享,可在线阅读,更多相关《Delphi数据库开发工具.docx(18页珍藏版)》请在三一办公上搜索。
1、第12章delphi数据库开发工具本章要点:0数据库系统的基本概念0学会使用delphi数据库开发工具12.1数据库系统概述12. 1. 1数据库系统的基础知识数据库系篇成数据库系统(DBS即Database System)是以数据库为核心,并以管理为目的的计算机系统 称为数据库系统(Data Base System,简称DBS)。数据库系统狭义地讲是由数据库、数据库管 理系统和用户构成、广义地讲是由计算机硬件、操作系统、数据库管理系统以及在它支持下建 立起来的数据库、应用程序、用户和维护人员组成的一个整体。数据库系统同其他计算机系统类似,是由计算机硬件和软件两部分组成。计算机硬件资源包括主机
2、和输入/输出设备。数据库系统的硬件应要求有足够大和安全的磁 盘等直接存储设备,用于安全地存储庞大的数据;要求有较高的通讯能力,以提高数据传送率; 要求系统支持联网,实现数据共享。数据库系统的软件包括操作系统、数据库管理系统(编译系统)和应用程序系统。1. 数据库2. 数据库管理系统3. 应用程序系统应用程序系统是指数据库应用程序系统,它是针对某一个管理对象(应用)而设计的一个 面向用户的软件系统,是建立在DBMS基础上的,而且具有良好的交互操作性和用户界面数据库应用程序与DBMS进行通信,并访问DBMS中的数据,它是DBMS实现其对外提供数据 信息服务这一目的的唯一途径。简单地说,数据库应用程
3、序是一个允许用户插入、修改、删除 并报告数据库中的数据的计算机程序。如学生选课管理系统、人事管理系统、财务管理系统等均为一个数据库应用程序系统。它 与数据库管理系统和数据库一同构成数据库软件系统。这种实用数据库系统也常常称为管理信 息、系统(Management Information System,简称 MIS)。4. 数据库用户严格地说,一个完整的数据库系统还应该包含数据库用户。数据库用户根据他们的工作内 容可分成以下三类人员。 终端用户:这类人员一般是不要求精通计算机的各级管理人员,他们一般使用应用程序 提供的菜单来操作数据库、生成报表等。 设计与开发人员:这类人员是负责设计和编制应用程
4、序的人员。系统分析员:负责应用系统的需求分析和规范说明,确定系统的软、硬件配置,参与 数据库系统的概要设计数据库设计人员:参与需求调查和系统分析,负责数据库中数据的确定,各级模式的 设计应用程序员:负责设计和编写系统的程序模块,并进行调试和安装 数据库管理员:这类人员是指全面负责数据库系统的管理维护,保证系统能够正常使用 的人员。在数据库系统环境下,有两类共享资源。一类是数据库,另一类是数据库管理系统软件。 因此需要有专门的管理机构来监督和管理数据库系统。职责1:数据库要存放哪些信息,DBA要参与决策。因此DBA要与其它人员一起搞好数据库 设计,参与数据库设计的全过程。职责2: DBA根据应用
5、要求,和数据库设计人员一起共同决定数据的存储结构和存取策略, 以求获得较高的存取效率和存储空间利用率。例如:针对数据库的应用主要是查询,还是更新,数据库中数据的存储方式有多种选择。??职责3:确定用户的存取权限、数据的保密级别、完整性约束条件职责4:及时处理数据库系统运行过程中出现的问题,周期性的转储数据、维护日志文件。职责5:在系统运行期间监控系统的空间利用率、处理效率等性能指标,对运行情况进行 记录、统计分析,根据实际运行环境和工作经验不断改进数据库设计。在运行过程中,由于大量数据的不断插入、删除,时间一长会影响系统的性能。因此,要 定期对数据库进行重组,以提高系统的性能。当用户的需求发生
6、改变和增加时,要重新构造数据库,修改部分结构。但是,对规模较小的数据库系统,数据库用户除应用程序员外,只有一个终端用户,而这 个终端用户也就兼任数据库管理员的工作。12. 1. 2数据库系统的开发数据库系统设计是在现成的数据库管理系统上建立数据库应用系统的过程。应包括软硬件 的选择和数据库应用系统的设计两部分。通常所称的数据库系统设计(或数据库设计)主要是指数据库应用系统设计,它是指在具 备了 DBMS、系统软件、操作系统和硬件(含网络)的环境后,开发人员使用这一环境,利用各 种开发工具,设计出用户满意的数据结构和相应的数据处理程序,建立数据库应用系统的过程。数据库应用系统设计可以分为需求分析
7、、软件设计、测试、运行与维护四个阶段,还可以 进一步细分为数据分析、功能分析、数据库设计、应用程序设计、测试、运行和维护七个内容 与步骤。在软件设计阶段有两个重要的设计内容,即数据库设计和应用程序设计。数据库设计又称 数据结构设计,应用程序设计又称处理程序设计,这两个内容是数据库应用系统设计的核心, 两者相互支持又相互制约。处理是对数据的加工,不同的用户有不同的要求,其设计与用户的 具体要求密切相关。数据是处理加工的对象,对数据库而论,它是所有数据的综合,面向全体 用户。12. 1. 3数据库系统的体系结构数据库应用程序在逻辑上通常由两部分组成:一是数据库访问链路,二是用户界面。这就 是数据库
8、系统应用程序的体系结构。数据库应用程序的体系结构包括单层、两层和多层。Delphi应用程序能存取各类数据一一文件服务器或本地的桌面数据表及远程数据库。Delphi 程序通过 BDE (Borland Database Engine)或者 ADO (Active Data Object)来访问各 种数据源。其中BDE是Borland公司开发的数据库引擎,它的基本思想是把应用程序开发接口部分与 连接数据库的部分分开。这样用户就可以按照自己的意愿把应用程序前端部分代码得编写通用, 而数据源改变也不用重新编码,只要重新设置BDE就可以。ADO数据访问接口是Microsoft公司处理数据库信息的最新技术
9、。它是一种ActiveX对象, 采用OLEDB的数据访问模式,是数据访问对象DAO、远程数据对象RDO和开放数据库互联ODBC 三种方式的扩展。ADO已成为访问数据库的新标准。数据库分为本地数据库和远程数据库两种。例如Paradox、dBase、FoxPro和Access等, 这些数据库被称为本地数据库,一般用于编写单层的数据库应用程序,即本地数据库应用程序。另一种是远程数据库服务器,如 InterBase、Oracle、Sybase、Informix、Microsoft Sql Server和DB2等,一般用于编写多层次的数据库应用程序,即C/S(客户/服务器Client/Server) 数
10、据库应用程序和多层数据库应用程序。Delphi数据库应用程序通过BDE或者ADO获取它们所需的数据。Delphi所支持的数据库种 类一般包括以下几种。1. dBase 数据库(.DBF)2. Paradox数据库3. ASCII 文件(.TXT)4. 本地 InterBase 服务器(.GDB)5. Access 数据库(.MDB)6. 各种数据库服务器7. 可以通过ODBC与其他数据库建立链接12. 1.4 Delph i的数据库辅助工具Delphi提供了几个数据库辅助工具为数据库的开发提供了强大的数据管理功能,本节主 要介绍常用几个的数据库辅助工具: Database Desktop (数
11、据库工作平台) BDE Administrator(数据库引擎管理器):利用它建立数据库别名,实现数据库应 用程序与相应的数据库的连接。 ODBC(开放数据库链路):提供对于Delphi不支持的数据库连接。 SQL Explorer (数据库管理器):主要用来浏览数据库。 Data Pump (数据转移):实现本地数据库或SQL数据库间的基表及其数据的转移。12.2 Database Desktop12. 2. 1 Database Desktop概述Database Desktop (数据库工作平台)是Delphi数据库应用程序开发常用的工具之一,使 用Database Desktop可以建
12、立数据库表的结构,并能修改数据库表的结构,完成对数据库表的 数据的输入、修改、删除及查询等,比较简单方便,通用性较强。12. 2.2设定工作目录和私有目录1. 设定工作目录Working Directory (工作目录)菜单在Database Desktop窗口下的“File”菜单下,可 以在Working Directory编辑框中输入一个已经建立的目录作为工作目录。2. 设定私有目录Private Directory菜单用于建立一个专用的私有目录来保存建立的临时基表,可以使用 系统设置的默认私有目录,也可以重新建立一个私有目录。12. 2. 3 用Database Desktop建立数据库
13、表使用Database Desktop创建数据库表的步骤如下:执行菜单FileNewTable,弹出 Create Table对话框,提示建立数据库的类型,缺省情况下为Paradox 7,如果建立其他类型表 格,可以从下拉框中选择,单击OK确定。在Create Paradox 7 Table的对话框中建立一个信息系学生数据库,过程如下:1. 定义字段在Field Name中输入第一个字段的名称SNO,用来表示学生的学号;在Type列单击右健, 为SNO选择数据类型,定义为Alpha(字符串类型);即在Key列上单击或按任意健,该列上出 现一个*号,表示定义该字段为关键字。2. 定义其他字段定义
14、完一个字段后,按Enter键或向下的方向键I定义下一个字段,按照同样的方 法定义该字段。3. 保存保存数据库表单击“ SaveAs ”按钮,在出现的对话框中选择一个数据库别名,然后输入一 个文件名,比如“学生表_”,保存该数据库表。并返回到Database Desktop的主界面。4. 创建其他数据库表按照上述3个步骤建立其他数据库表格。12. 2.4编辑数据在Database Desktop种,单击FileOpenTable选项,弹出要选择数据库表的信息框, 如选中“学生表_”,单击“打开”按钮即可打开该表。单击菜单命令TableEdit Data,就可以编辑表中的数据,也可以使用F9键,完
15、成编 辑命令操作。12. 2.5数据库表的各种属性在Table Properties下拉列表框中提供了一个属性列表,可以对数据库表的各种属性进行 设置,比如有效性检查、第二索引、口令等。各种属性的设置如下:1. Validity Checks (有效性检查)进行有效性设置。Required Field属性表示该字段不能为空;Mininum Value表示输入字段的最小值;Maxinum Value表示输入字段的最大值;Defaut Value表示输入值短的默认值;Picture表示字段的图像显示方式。2. Table Lookup (参照完整性设置)定义“子表”和“主表”的参照完整性。即“子表
16、”中的一个字段或者一组字段必须在 “父表”存在,数据库只接受那些存在于“父表”的字段的值作为“子表”中所指定的字段的 正确值,并且只能在由匹配值的字段之间建立参照完整性检查。3. Secondary Indexes (第二索引属性)设置数据库表格的第二索引属性。单击Define按钮,弹出定义第二索引对话框。在Fields 列表框中显示数据表格的所有字段。选择需要定义的字段,添加到Indexed fields列表框中。 该字段就定义为数据表格的第二索引字段。4. Referential Integrity (引用完整性)本属性用于维护父表与子表之间的引用完整性。5. Password Secur
17、ity (数据表格的密码属性)用来定义数据库表格的密码。选择Password Security选项,单击Define按钮,弹出设置 密码对话框。12. 2.6建立其它型数据库表使用Database Desktop除了建立Paradox 7类型的表格外,还可以建立其他类型的表格。12. 2. 7 使用SQL查询和QBE查询SQL查询和QBE查询是Database Desktop提供的两种查询工具,SQL查询是使用SQL语句 执行的查询方法,是一种常用的高级查询方法,QBE查询是一种形式化查询的方法,比较直观 方便,它直接产生SQL语句。下面分别介绍:1. 使用SQL查询单击File-New-SQ
18、L File选项,打开一个新的SQL语句窗口,可以直接在SQL窗口中输 入语句。此时Database Desktop的主菜单中将增加Search和SQL两项,同时增加了几个加速 按钮来完成查询功能。执行SQL-SQL Run,即可执行相应的查询操作。2. 使用QBE查询依次单击FileNewQBE Query选项,选择数据库表并打开。根据查询条件选中要查询的 字段,也可以对某字段做出限定,字段选中后有一个对勾。然后选择菜单上QueryRun Query 或F8执行查询命令,也可以选择QueryShow SQL,显示系统自动生成的SQL代码,然后运 行该查询。12.3 BDE Administr
19、atorBDE Administrator (数据库引擎管理器)是BDE的配置程序,它主要对Delphi数据库应 用程序使用的别名进行管理,配置驱动程序等信息。利用它是限于相应数据库应用程序的连接。 运行BDE Administrator有两种方式:单击Windows的“开始”菜单,执行“程序” Borland Delphi 6BDE Administrator命令,就可以打开BDE Administrator;另一种打开方法为:在 “控制面板”中,打开“ BDE Administrator ”图标。1. 别名管理不同的数据库有不同的信息,为了使数据库应用程序不需修改的情况下,能与多个数据库
20、建立连接,BDE Administrator提供了建立数据库别名的功能。Database选项卡中列出的是已经存在的数据库别名,选中某个别名后,其信息将显示在窗 格中。建立新的数据库别名的方法:选择一个数据库对象,单击鼠标右健,从弹出的菜单中选 择“New”选项,弹出“NewDatabase Alias”对话框,选择数据库驱动程序,然后进行参数配 置。2. 驱动程序的管理在Configuration选项卡中,Drivers选项中列出了支持的数据库格式,其中Native选项 下是本地数据库格式;ODBC可以用来连接Delphi不支持的数据库。System选项中用于设置有 关系统的配置。12.4 O
21、DBC(开放数据库链路)ODBC的英文全称是Open Database Connectivity, ODBC内含的驱动程序与具体数据库相 关,一个驱动就是一个支持ODBC调用的函数模块,用户通过调用驱动程序提供的接口函数来访 问数据库,要使用不同类型的数据库只需要调整ODBC数据库连接。这里只介绍通过控制面板进行配置的方法。(1) 双击控制面板中的 ODBC Data Sources(32 bit),打开 ODBC Data Source Administrator 窗口,单击“ Add ”按钮,打开新建数据源的窗口,提示用户选择数据源的驱动程序。(2) 从驱动程序列表中选择驱动程序,这里选择
22、“Microsoft Access Driver(*.mdb)”为 例,单即“完成”按钮,弹出“ ODBC Microsoft Access安装”窗口,设定数据源名,单击“选 择”按钮,弹出“选择数据库”窗口,进行配置数据库(已存在的),单击“确定”按钮,返回到“ ODBC Microsoft Access 安装”窗口,单击“确定”,返回到“ ODBC Data Source Administrator ”窗。单击“确定”按钮,完成了对数据源的配置。12.5 SQL Explorer(数 据库管理器)12. 5. 1数据库的管理数据库资源管理器是一个功能强大的数据库浏览工具,通过该工具可以查看
23、、编辑、修改、 查询数据库中的数据记录,也可以创建、编辑、修改、删除数据库别名。1. 浏览数据库与建立数据库在Database选项卡中,选中任一个数据库,就可以浏览数据库的定义。右击任一个数据库, 会弹出一个菜单,执行菜单中的“New”命令,出现New Database Alias对话框,进行选择数 据库的驱动程序,然后单击“OK”。完成操作后,右击Database选型卡中的数据库别名,在弹 出的菜单中执行“Apply”命令,完成建立数据别名操作。2. 修改数据库在Database选项卡中选中该数据库,右侧窗格“Definition”中显示格参数的配置;可以 对其进行修改;修改完后,在Data
24、base选项卡中单击鼠标右键,执行“Apply”命令,就完成 了对数据库的修改。3. 删除数据库在要删除的数据库名上单击鼠标右健,在弹出的菜单中执行“ Delete ”命令,然后在 Database选项卡中单击鼠标右键,执行“Apply”命令,就完成了数据库的删除操作。12. 5. 2数据库的访问1. 加密双击Database”选项卡中的一个数据库,将弹出“Database Login”对话框。其中要求 输入用户名和口令。从而进行加密。2. 访问数据库的内容双击“Database”选项卡中的一个数据库,或执行“Open”后,进入数据库。12.6 Data Pump (数据转移)Data Pum
25、p (数据转移)可以实现数据库间的基表及其数据的转移,即从源数据库的基表中 读取数据,然后移动到目标数据库的基表中,在移动过程中源基表的数据类型会根据目标数据 库的数据类型进行相应的变化。12.7数据库工具的综合实例为掌握本章的数据开发工具,设置综合实例如下:(1)使用Database Desktop创建3张Paradox?的数据表,用来描述学生借书的信息。表 的结构见P225表12-3、表12-4、表12-5。)设置Record表中的studentno、bookno的参照完整性(3) 编辑数据库表。(4) 建立索引:在表三中分别studengtno和bookno建立第二索引。(4)使用BDE
26、 Administrator设置该数据库别名为book。OLE DB的概念与编程OLE DB的概念简单地说,OLE DB是一种技术标准,目的是提供一种统一的数据访问接口,这里所说的“数 据”,除了标准的关系型数据库中的数据之外,还包括邮件数据、Web上的文本或图形、目录 服务(Directory Services),以及主机系统中的IMS和VSAM数据。OLE DB标准的核心内容 就是要求以上这些各种各样的数据存储(Data Store)都提供一种相同的访问接口,使得数据 的使用者(应用程序)可以使用同样的方法访问各种数据,而不用考虑数据的具体存储地点、 格式或类型。OLE DB标准的具体实现
27、是一组C+ API函数,就像ODBC标准中的ODBC API 一样,不同 的是,OLEDB的API是符合COM标准、基于对象的(ODBC API则是简单的CAPI)。使用OLE DB API,可以编写能够访问符合OLE DB标准的任何数据源的应用程序,也可以编写针对某种 特定数据存储的查询处理程序(Query Processor)和游标引擎(Cursor Engine),因此OLE DB 标准实际上是规定了数据使用者和提供者之间的一种应用层的协议(Application-Level Protocol)0即将发布的微软最新数据库产品SQL Server 7.0的查询处理程序就是使用OLE DB
28、API编 写的,所以在SQL Server 7.0的Transact-SQL语法中,可以支持异种数据库的查询,当然, 这些异种数据库必须也提供相应的OLE DB访问接口。OLE DB标准中定义的新概念OLEDB将传统的数据库系统划分为多个逻辑组件,这些组件之间相对独立又相互通信。这 种组件模型中的各个部分被冠以不同的名称:数据提供者(Data Provider)。提供数据存储的软件组件,小到普通的文本文件、大到主 机上的复杂数据库,或者电子邮件存储,都是数据提供者的例子。有的文档把这些软件组件的 开发商也称为数据提供者。数据服务提供者(Data Service Provider)。位于数据提供
29、者之上、从过去的数据库管理 系统中分离出来、独立运行的功能组件,例如查询处理器和游标引擎(Cursor Engine),这些 组件使得数据提供者提供的数据以表状数据(Tabular Data)的形式向外表示(不管真实的物 理数据是如何组织和存储的),并实现数据的查询和修改功能。SQL Server 7.0的查询处理程 序就是这种组件的典型例子。业务组件(Business Component)。利用数据服务提供者、专门完成某种特定业务信息处 理、可以重用的功能组件。分布式数据库应用系统中的中间层Middle-Tier)就是这种组件的 典型例子。数据消费者(Data Consumer)。任何需要访
30、问数据的系统程序或应用程序,除了典型的数 据库应用程序之外,还包括需要访问各种数据源的开发工具或语言。OLE DB与ODBC的关系由于OLE DB和ODBC标准都是为了提供统一的访问数据接口,所以曾经有人疑惑:OLEDB 是不是替代ODBC的新标准?答案是否定的。实际上,ODBC标准的对象是基于SQL的数据源 (SQL-Based Data Source),而OLE DB的对象则是范围更为广泛的任何数据存储。从这个意 义上说,符合ODBC标准的数据源是符合OLE DB标准的数据存储的子集。符合ODBC标准的数 据源要符合OLE DB标准,还必须提供相应的OLE DB服务程序(Service P
31、rovider),就像 SQL Server要符合ODBC标准,必须提供SQL Server ODBC驱动程序一样。现在,微软自己已 经为所有的ODBC数据源提供了一个统一的OLE DB服务程序,叫做ODBC OLE DB Provider。ODBC OLE DB Provider发布之后,有人又担心:ODBC Provider是不是在ODBC之上的新 的层次(Layer)?如果是,那么使用OLE DB访问ODBC数据源是否将影响性能?答案也是否 定的。实际上,ODBC Provider的作用,是替换ODBC Driver Manager,作为应用程序与ODBC驱 动程序之间的桥梁,理论上不会
32、增加任何开销。ADO的概念我们已经知道,OLE DB标准的API是C+ API,只能供C+语言调用(这也是OLE DB没 有改名为ActiveX DB的原因,ActiveX是与语言无关的组件技术)。为了使得流行的各种编 程语言都可以编写符合OLE DB标准的应用程序,微软在OLE DB API之上,提供了一种面向对 象、与语言无关的(Language-Neutral)应用编程接口,这就是ActiveX Data Objects,简称 ADO。与DAO、RDO等类似,ADO实际上是一种对象模型,不过这个对象模型相对简单,示意如 下:在这个对象模型中,Connection类似于RDO的rdoCon
33、nection或者DAO的Database, Command 类似于 RDO 的 rdoPreparedStatement 或者 DAO 的 QueryDef。值得注意的是:与DAO等模型的层次结构不同,ADO基本上是一种平板结构:Command和 Recordset与Connect之间并没有上下层次关系,这种设计主要是为了适应Internet应用开 发的需要。因为在Internet上,像在局域网内那样维护一个永久性的连接、然后在连接的基 础上执行查询,基本上是不可能的。ADO与其他编程接口的比较网络数据库应用程序的开发可以使用的编程接口包括:DAO、ADO、RDO、ODBC API和 DB-
34、Library等,应用系统的框架模型示意如下:除了这些标准的编程接口之外,还有一些应用程序(例如MS Access)也可以作为访问远 程数据库的编程工具。这些接口或工具在编程的简便程度和利用远程数据库的功能方面差异很 大,如下图所示:可以看出,使用MS Access (通过DAO/JET),编程非常容易,但是因为把远程网络数据库 当成本地Access数据库对待,很难利用网络数据库的高级特性;而ODBC API则刚好相反,数 据库管理系统的特性几乎可以完全利用,但是编程复杂,效率低。我们关心的ADO在编程难易程度方面比DAO和RDO都好(主要得益于简单的对象模型), 但是在利用数据库的特性方面与
35、RDO不相上下;至于程序运行效率,ADO当前的版本是1.5, 性能方面与RDO还有一定的差距,当Visual Studio 6发布时,ADO将升级到2.0版,新版 本在功能和性能方面都将与RDO相当或更强。因此对于应用开发人员来说,ADO是一种非常有 前途的编程接口。实际上,微软已经公开表示,今后的微软产品在数据访问的接口方面,将统一到OLEDB和 ADO标准上来。ADO编程实例对于习惯了使用DAO或RDO的编程人员来说,ADO的出现无疑会有一定的冲击,因为新的 对象模型总是需要一个学习的过程。但实际上,对于最常用的数据库访问操作,这些接口往往 只是在对象的名称、属性和方法上略有不同而已,所以
36、广大程序员不必担心。下面举例说明应 用方法。(1)连接/打开数据库使用ADO:Dim CnADO As New ADODB.ConnectionDim sConn As StringsConn = Driver=SQL Server;Server=MyServer”sConn = sConn & ;UID=sa;PWD=;Database=pubssConn = sConn & ;Network=DBMSSOCN;Address=MyServer,1433CnADO.Open sConn使用RDO:Dim Env As rdoEnvironmentDim CnRDO As rdoConnect
37、ionDim sConn As StringSet Env = rdoEngine.rdoEnvironments(0)sConn = Driver=SQL Server;Server=MyServer”sConn = sConn & ;UID=sa;PWD=;Database=pubssConn = sConn & ;Network=DBMSSOCN;Address=MyServer,1433Set CnRDO = Env.OpenConnection(, , , sConn)(2)查询结果集使用ADO:Dim Rs As ADODB.RecordsetSet Rs = CnADO.Execute(select * from titles)使用RDO:Dim Rs As rdoResultsetSet Rs = CnRDO.OpenResultset(select * from titles)可见,两种方法几乎完全一样,而且ADO在有些方面更加简单(例如创建数据库连接时不 用先指定一个上层对象一RDO的rdoEnvironment)。