第 11 章 设计数据库应用程序

Post on 24-Jan-2016

216 views 6 download

description

第 11 章 设计数据库应用程序. 本章我们首先介绍了数据库和数据库系统的基础知识。然后讨论了 Delphi 数据库体系结构及其特点。接着以常用的 ADO 数据库接口为例,详细讲解了 Delphi 数据库应用程序的设计方法和设计过程。最后还进一步介绍了 SQL 数据库编程 11.1 数据库和数据库系统 11.2Delphi 数据库体系结构 11.3 基于 ADO 的数据库应用程序 11.4SQL 数据库编程 11.5 本章小结. 11.1 数据库和数据库系统. - PowerPoint PPT Presentation

Transcript of 第 11 章 设计数据库应用程序

DelphiDelphi 程序设计大学教程程序设计大学教程

第 11 章 设计数据库应用程序本章我们首先介绍了数据库和数据库系统的基础知识。然后讨论了 Delphi 数据库体系结构及其特点。接着以常用的 ADO 数据库接口为例,详细讲解了 Delphi 数据库应用程序的设计方法和设计过程。最后还进一步介绍了 SQL 数据库编程 11.1数据库和数据库系统11.2Delphi数据库体系结构11.3基于ADO的数据库应用程序11.4SQL数据库编程11.5本章小结

DelphiDelphi 程序设计大学教程程序设计大学教程

11.1 数据库和数据库系统数据库提供了一种把相关信息集合在一起的方法,它是一个数据的有机集合,它可以使我们在某个集中的地方存储和维护这些信息。一个数据库系统则主要由以下三大部分组成: 数据库 按一定结构组织在一起的相

关数据的集合 数据库管理系统( DBMS ) 它是专门负

责组织和管理数据信息的程序 数据库应用程序 它使我们能够获取、

显示和更新由 DBMS 存储的数据

DelphiDelphi 程序设计大学教程程序设计大学教程

11.1.1 数据库管理系统数据库管理系统( DBMS )是用于描述、管理和维护数据库的程序系统,是数据库系统的核心组成部分。它建立在操作系统的基础上,对数据库进行统一的管理和控制。其主要功能有: 描述数据库 管理数据库 维护数据库 数据通信

DelphiDelphi 程序设计大学教程程序设计大学教程

11.1.1 数据库管理系统关系数据库模型是数据的逻辑表示,只需考虑数据间的关系而不必关心数据的物理结构。关系数据库中包括: 表( Table ) 字段( Field ) 记录( Record ) 索引( Index )

从表 /明细表

外键 字段/列主键

记录/行

主表

DelphiDelphi 程序设计大学教程程序设计大学教程

11.1.2 数据库应用程序DBMS 中存储了大量的数据信息,其目的是为用户提供数据信息服务,而数据库应用程序正是与 DBMS 进行通信,并访问 DBMS中的数据,它是 DBMS 实现其对外提供数据信息服务这一目的的唯一途径。简单地说,数据库应用程序是一个允许用户插入、修改、删除数据库中数据的计算机程序。数据库应用程序在传统上是由程序员用一种或多种通用或专用的程序设计语言编写的,而 Delphi正是一种强大的数据库应用程序开发工具。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.1.3 数据库安全数据库往往包含了一些敏感信息。为了保护这些信息,不同的数据库有不同的保护策略。有的数据库如 Paradox 和 dBASE ,仅仅在表格级或字段级提供了安全保护,当一个用户试图访问受保护的表格时,必须输入口令。当口令被认可,用户只能看到允许的字段。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.2 Delphi 数据库体系结构 Delphi 是目前开发器数据库应用程序的强有力

的工具。 Delphi拥有自己的 BDE ( Borland Database Engine )数据库驱动接口,它允许用户创建并访问 dBASE 、 Paradox 和 InterBase数据库;通过 Borland SQL Link, Delphi 能直接访问 Oracle 、 Sybase 、 DB2 、 SQL Server 、 Informix 以及 InterBase 数据库服务器。Delphi 还支持 ODBC、 ADO等微软的数据库访问标准。

Delphi 对于分布式数据库及多层架构的应用还有自己成熟的 DataSnap 、 dbGo等解决方案。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.2.1 本地数据库和远程数据库 本地数据库位于本地磁盘或局域网上。典型的

本地数据库有 Paradox 、 dBASE 、 FoxPro 和Access。

远程数据库通常位于远程计算机(数据库服务器)上,用户通过 SQL来访问远程数据库中的数据,正是基于这个原因,远程数据库有时候也叫 SQL 服务器或者叫 RDBMS 。典型的 SQL服务器有 Interbase 、 Oracle 、 Sybase 、 Informix 、 Microsoft SQLServer 和 DB2 。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.2.2 选择合适的体系结构一个数据库应用程序在逻辑上通常由数据库访问链路和用户界面两部分组成。

典型的数据库应用程序的体系结构:用户界面与数据访问链路分开的结构

DelphiDelphi 程序设计大学教程程序设计大学教程

11.2.3 连接数据库服务器

直接连接数据库服务器

DelphiDelphi 程序设计大学教程程序设计大学教程

11.2.3 连接数据库服务器

多层数据库应用程序的体系结构

DelphiDelphi 程序设计大学教程程序设计大学教程

11.2.4 Delphi 数据库组件介绍1. 数据集和连接组件

BDE ADO dbExpress InterBase

DelphiDelphi 程序设计大学教程程序设计大学教程

11.2.4 Delphi 数据库组件介绍2. 数据访问组件

组件面板 Data Access 页上的组件用于连接数据集组件和数据控制组件,以便数据感知控件能无差别地存取数据库,而不受各种数据库访问机制的影响。

其中最常用的是数据源 TDataSource 组件。还包含了 TClientDataset和 TDataSetProvider组件。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.2.4 Delphi 数据库组件介绍3. 数据控制组件

Delphi 的数据库控制组件通常称为数据感知控件。这是因为数据库控制组件有自动感知数据的能力

位于组件面板 Data Controls 页的数据感知控件

DelphiDelphi 程序设计大学教程程序设计大学教程 11.3 基于 ADO 的数据库应用程

序ADO 是 ActiveX Data Object的简称,是 Microsoft 来访问数据库接口。通过 ADO 可以快速访问各种数据资源,包括关系数据库和非关系型数据库、邮件和文件系统、文本和图像以及任何自定义的业务对象。 ADO 是目前Windows平台的主流数据库接口。

DelphiDelphi 程序设计大学教程程序设计大学教程 11.3 基于 ADO 的数据库应用程

序ADO组件 说明

TADODataSet 代表一个 ADO数据库,可以从一个或多个表中检索数据

TADOTable 代表一个表,可以从单个表中检索数据

TADOQuery 用 SQL语句查询数据集;可以执行 DDL( Data Definition Language)命令,诸如 CREATE TABLE, DROP TABLE等

TADOStoreProc 用于执行存储过程,可以返回结果,也可以执行 DDL命令

TADOCommand 可以执行不需要返回结果的命令,也可以从一个表中检索数据

TADOConnection 用于连接一个 ADO数据库。多个 ADO组件可共享这个连接来执行命令、检索数据和数据库对象进行操作。特别是当多个 ADO组件需要共享 ADO连接并且保持同步时,应当使用 ADOConnection来连接数据库

DelphiDelphi 程序设计大学教程程序设计大学教程

11.4 SQL 数据库编程 SQL 语言作为关系数据库管理系统中的一种通

用的结构查询语言,已经被众多的数据库管理系统所采用。

Delphi 与使用 SQL 语言的数据库管理系统兼容,在使用 Delphi 开发数据库应用程序时,我们可以嵌入 SQL 语言编程。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.4.1 SQL 语言简介1. SQL 的历史

在 70 年代初, E.E.Codd 首先提出了关系模型。70 年代中期, IBM公司在研制 SYSTEM R 关系数据库管理系统中研制了 SQL 语言,最早的 SQL 语言(叫 SEQUEL2 )是在 1976 年 11月的 IBM Journal of R&D 上公布的。 1979 年 ORACLE公司首先提供商用的 SQL , IBM公司在 DB2 和 SQL/DS 数据库系统中也实现了 SQL 。

1989 年,美国 ANSI采纳在 ANSI X3.135-1989 报告中定义的关系数据库管理系统的 SQL标准语言,称为 ANSI SQL 89, 该标准替代 ANSI X3.135-1986 版本。该标准也被国际标准化组织( ISO )和美国联邦政府所采纳。目前,所有主要的关系数据库管理系统都支持并遵守 ANSI SQL89 标准。

DelphiDelphi 程序设计大学教程程序设计大学教程

2. SQL 的特点 SQL 是非过程化语言。 SQL 是统一的语言。 SQL 是所有关系数据库的公共语言

11.4.1 SQL 语言简介

DelphiDelphi 程序设计大学教程程序设计大学教程

3.SQL 语言的基本语法 ALTER TABLE 用于改变现存表的结构。CREATE INDEX 用于在一个或多个列上创建索引。CREATE TABLE 用于创建一个新数据库表。CREATE VIEW 用于为一个或多个表创建视图。DELETE DELETE 从表中删除一个或多个行。

11.4.1 SQL 语言简介

DelphiDelphi 程序设计大学教程程序设计大学教程

2.SQL 语言的命令CREATE DATABASE 用于创建一个数据库。DROP 永久删除数据库对象(表、视图、索引等)。INSERT 插入一行到表中。SELECT 用于从一个或多个表(或视图)中提取数据。UPDATE 用于更新表中的一个或多个行。

11.4.1 SQL 语言简介

DelphiDelphi 程序设计大学教程程序设计大学教程

11.4.2 使用 SQL 编程在 Delphi 中用于实现对 SQL 语言编程的主要有 Query 类组件和 StoredProc类组件。主要作用如下: Query 类组件——执行 SQL命令,其通过 SQL

下载得到的数据集可供数据控制组件使用。 StoredProc类组件——在数据库服务器上创建和执行存储过程,只返回结果。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.4.2 使用 SQL 编程1. Query 类组件

Query 类组件是一个数据集组件,他们都是 TDataSet的派生类,与 Table类组件具有很多共同的特性。在 Delphi 数据库开发应用中, SQL 语句是通过 Query 类组件传递到要访问的数据库系统的数据库引擎中,并由该数据库引擎具体执行 SQL 语句,以实现对数据的操作,而不是由 Delphi自己来实施具体的 SQL动作。

Query 类组件提供了一些 Table类组件所不具备的强大功能,例如: 多表联接查询 复杂的嵌套查询和条件查询 明确需要按 SQL 语言进行的操作

DelphiDelphi 程序设计大学教程程序设计大学教程

11.4.2 使用 SQL 编程在 SQL 编程中使用 Query 类组件的具体方法步骤如下: ( 1 ) 为 Query 类组件设置数据库连接。 ( 2 ) 为 Query 类组件设置 SQL属性。 ( 3 ) 执行 SQL命令。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.4.2 使用 SQL 编程2. 静态和动态 SQL

在 Delphi 应用程序中编写和使用的 SQL 语句有两种:即静态 SQL 语句和动态 SQL 语句。前者是在程序设计阶段,将 SQL命令文本作为 Query 类组件的 SQL属性值设置。而后者是通过编程在 SQL 语句中包含一系列的参数,在程序运行过程中各参数值是可变的,即可以动态地给 SQL 语句中的参数赋值。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.4.2 使用 SQL 编程 静态方式是把 SQL命令作为 Query 类组件的 S

QL属性值进行设置,即在程序设计期输入 SQL语句。程序运行时,当该 Query 类组件的 Active属性为 True时,便自动执行 SQL属性中设置的 SQL命令。如果是 SQL查询命令,那些通过TDataSource 组件与该 Query 类组件相连接的数据感知控件就能显示查询到的结果。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.4.2 使用 SQL 编程3. 带参数的 SQL

SQL 语句可以不带参数,把字段名称和值固定在 SQL 语句中。

如果用参数的话,查询就灵活得多,应用程序不需要改写 SQL 语句本身,只要修改参数的值,就能使 SQL 语句执行不同的查询功能。在执行SQL 语句之前, Query 类组件会自动把实际的值替换 SQL 语句中的参数,即使并没有显式地调用 Prepare函数。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.4.2 使用 SQL 编程4. 执行 SQL 语句

当指定了 SQL 语句并且提供了参数后,即编写好 SQL 程序之后,就可以执行 SQL 语句了。

在设计期和运行期都可以执行 SQL 语句。要在设计期执行 SQL 语句,只要把 Active属性设为True 。不过,在设计期能执行的 SQL 语句,仅限于 SELECT 语句,而不能是 INSERT 、 UPDATE 或 DELETE 语句。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.4.3 示例程序: SQL查询窗体

1. 设计查询窗体 在前面图书管理系统的示例程序中,主窗体 TM

ainForm中有一段代码用于创建查询子窗体 TQueryBookForm,实现数据查询。

这个窗体 TQueryBookForm就是现在我们要讲解的用 SQL 语句实现的查询单元。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.4.3 示例程序: SQL查询窗体

图 11-17 查询窗体界面设计

DelphiDelphi 程序设计大学教程程序设计大学教程

11.4.3 示例程序: SQL查询窗体

2. 使用 TADOQuery TADOQuery是 Query 类组件,用来对一个或多个表进

行查询。我们要执行的 SQL查询语句也是通过该组件的SQL属性来指定的。

TADOQuery 既可以用 SQL 的 DML ( Data Manipulation Language )来检索数据,也可以用 SQL 的 DDL( Data Definition Language )来创建或删除数据库的元对象。不过 SQL 语句必须能够被 ADO驱动程序认可。

3. 编写应用逻辑代码

DelphiDelphi 程序设计大学教程程序设计大学教程

11.5 本章小结 数据库是数据的有机集合,便于集中存储和维护互

相关联的数据。 一个数据库系统主要由数据库、数据库管理系统、

数据库应用程序 3 大部分组成。 数据库管理系统( DBMS )是用于描述、管理和

维护数据库的程序系统。主要有四种类型:文件管理系统、层次数据库系统、网状数据库系统和关系数据库系统。

关系数据库模型是数据的逻辑表示,只需考虑数据间的关系而不必关心数据的物理结构。关系数据库中包括有:表、字段、记录、索引等数据库对象。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.5 本章小结 数据库应用程序与 DBMS 进行通信,并访问 DBM

S 中的数据,是 DBMS 实现其对外提供数据信息服务的唯一途径。简单地说,数据库应用程序是一个允许用户插入、修改、删除数据库中数据的计算机程序。

结构化查询语言( SQL )是基于关系模型的数据库查询语言,它是一种非过程化的程序语言,也就是说,没有必要写出将如何做某事情,只需写出做到什么就可以了。 Delphi 编写数据库应用程序时可以使用 SQL 。

数据库往往包含了一些敏感信息。为了保护这些信息,不同的数据库有不同的保护策略。大部分需要用户输入用户名和口令才能登录到数据库服务器。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.5 本章小结 本地数据库位于本地磁盘或局域网上,采取基于文件的锁定策略,数据存储量较小,安全性较差。典型的本地数据库有 Paradox 、 dBASE 、 FoxPro和 Access。

远程数据库通常位于远程计算机(数据库服务器)上,用户通过 SQL来访问远程数据库中的数据。远程数据库容量大,性能高、安全性好,并提供了基于事务的多用户支持。目前流行的远程数据库系统有 SQL Server 、 Oracle 、 Sybase 、 DB2 、 Informix 和 MySQL 。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.5 本章小结 典型的数据库应用程序的体系结构包括了数据库访

问链路和用户界面。对于多层的体系结构还包括用于业务逻辑的中间层。

通过 Delphi 数据库体系结构中的数据感知控件、数据访问组件、数据集组件以及数据模块的使用,可以提高数据库应用程序设计上的可伸缩性和可维护性,并提高开发效率。

Delphi 提供了利用不同的数据库驱动接口访问数据库的多个解决方案,并根据不同的数据访问机制设计了不同的数据集和连接组件,包括 BDE 、 ADO 、 dbExpress、 InterBase等。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.5 本章小结 ADO 是 Microsoft 来访问数据库接口。通过 ADO

可以快速访问各种数据资源,包括关系数据库和非关系型数据库、邮件和文件系统、文本和图像以及任何自定义的业务对象。 ADO 是目前Windows平台的主流数据库接口。 Delphi 提供了一组 ADO组件,可以通过 ADO技术来访问数据库。

设计数据库应用程序的步骤包括:创建数据库、设计数据模块、设计用户界面、编写应用逻辑代码。在设计基于 ADO 的数据库应用程序中,我们在数据模块中需要使用 TADOConnection来连接数据库,使用 ADO 数据集来获取或操纵数据记录。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.5 本章小结 最早的 SQL 语言由 IBM研制并首先用于关系数据

库管理系统中。 SQL 是非过程化语言,是统一的语言,是所有关系数据库的公共语言。

企业级大型数据库应用中, SQL 语言编程可以说是数据库应用程序开发的核心。由于 SQL 语言是在后台数据库管理系统(即数据库服务器)上运行的,充分利用数据库管理系统支持的 SQL 语言及其扩展 SQL函数,将极大地减少前台的开发工作量和运行负荷。所以在使用 Delphi 开发数据库应用程序时我们可以嵌入 SQL 语言,编写出更复杂、更强大的数据库应用程序。

DelphiDelphi 程序设计大学教程程序设计大学教程

11.5 本章小结 在 Delphi 中用于实现对 SQL 语言编程的主要有 Query 类组件和 StoredProc类组件。其中 Query类组件在使用 SQL 语言编程时占居着绝对重要的地位。 SQL 语句通过 Query 类组件传递到要访问的数据库系统的数据库引擎中,并由该数据库引擎具体执行 SQL 语句,以实现对数据的操作,而不是由 Delphi自己来实施具体的 SQL动作。

Query 类组件的具体方法步骤包括:设置数据库连接、设置 SQL属性、执行 SQL命令。其中 SQL命令可以是静态的,也可以是动态的,并支持参数化查询。