380 likes | 660 Views
第 11 章 设计数据库应用程序. 本章我们首先介绍了数据库和数据库系统的基础知识。然后讨论了 Delphi 数据库体系结构及其特点。接着以常用的 ADO 数据库接口为例,详细讲解了 Delphi 数据库应用程序的设计方法和设计过程。最后还进一步介绍了 SQL 数据库编程 11.1 数据库和数据库系统 11.2 Delphi 数据库体系结构 11.3 基于 ADO 的数据库应用程序 11.4 SQL 数据库编程 11.5 本章小结. 11.1 数据库和数据库系统.
E N D
第11章 设计数据库应用程序 本章我们首先介绍了数据库和数据库系统的基础知识。然后讨论了Delphi数据库体系结构及其特点。接着以常用的ADO数据库接口为例,详细讲解了Delphi数据库应用程序的设计方法和设计过程。最后还进一步介绍了SQL数据库编程 11.1 数据库和数据库系统 11.2 Delphi数据库体系结构 11.3 基于ADO的数据库应用程序 11.4 SQL数据库编程 11.5 本章小结
11.1 数据库和数据库系统 数据库提供了一种把相关信息集合在一起的方法,它是一个数据的有机集合,它可以使我们在某个集中的地方存储和维护这些信息。一个数据库系统则主要由以下三大部分组成: • 数据库 按一定结构组织在一起的相关数据的集合 • 数据库管理系统(DBMS) 它是专门负责组织和管理数据信息的程序 • 数据库应用程序 它使我们能够获取、显示和更新由DBMS存储的数据
11.1.1 数据库管理系统 数据库管理系统(DBMS)是用于描述、管理和维护数据库的程序系统,是数据库系统的核心组成部分。它建立在操作系统的基础上,对数据库进行统一的管理和控制。其主要功能有: • 描述数据库 • 管理数据库 • 维护数据库 • 数据通信
11.1.1 数据库管理系统 关系数据库模型是数据的逻辑表示,只需考虑数据间的关系而不必关心数据的物理结构。关系数据库中包括: • 表(Table) • 字段(Field) • 记录(Record) • 索引(Index) 记录/行 主键 外键 字段/列 主表 从表/明细表
11.1.2 数据库应用程序 DBMS中存储了大量的数据信息,其目的是为用户提供数据信息服务,而数据库应用程序正是与DBMS进行通信,并访问DBMS中的数据,它是DBMS实现其对外提供数据信息服务这一目的的唯一途径。简单地说,数据库应用程序是一个允许用户插入、修改、删除数据库中数据的计算机程序。数据库应用程序在传统上是由程序员用一种或多种通用或专用的程序设计语言编写的,而Delphi正是一种强大的数据库应用程序开发工具。
11.1.3 数据库安全 数据库往往包含了一些敏感信息。为了保护这些信息,不同的数据库有不同的保护策略。有的数据库如Paradox和dBASE,仅仅在表格级或字段级提供了安全保护,当一个用户试图访问受保护的表格时,必须输入口令。当口令被认可,用户只能看到允许的字段。
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等解决方案。
11.2.1 本地数据库和远程数据库 • 本地数据库位于本地磁盘或局域网上。典型的本地数据库有Paradox、dBASE、FoxPro和Access。 • 远程数据库通常位于远程计算机(数据库服务器)上,用户通过SQL来访问远程数据库中的数据,正是基于这个原因,远程数据库有时候也叫SQL服务器或者叫RDBMS。典型的SQL服务器有Interbase、Oracle、Sybase、Informix、Microsoft SQLServer和DB2。
11.2.2 选择合适的体系结构 一个数据库应用程序在逻辑上通常由数据库访问链路和用户界面两部分组成。 典型的数据库应用程序的体系结构:用户界面与数据访问链路分开的结构
11.2.3 连接数据库服务器 直接连接数据库服务器
11.2.3 连接数据库服务器 多层数据库应用程序的体系结构
11.2.4 Delphi数据库组件介绍 1. 数据集和连接组件 • BDE • ADO • dbExpress • InterBase
11.2.4 Delphi数据库组件介绍 2. 数据访问组件 • 组件面板Data Access页上的组件用于连接数据集组件和数据控制组件,以便数据感知控件能无差别地存取数据库,而不受各种数据库访问机制的影响。 • 其中最常用的是数据源TDataSource组件。还包含了TClientDataset和TDataSetProvider组件。
11.2.4 Delphi数据库组件介绍 3. 数据控制组件 • Delphi的数据库控制组件通常称为数据感知控件。这是因为数据库控制组件有自动感知数据的能力 位于组件面板Data Controls页的数据感知控件
11.3 基于ADO的数据库应用程序 ADO是ActiveX Data Object的简称,是Microsoft来访问数据库接口。通过ADO可以快速访问各种数据资源,包括关系数据库和非关系型数据库、邮件和文件系统、文本和图像以及任何自定义的业务对象。ADO是目前Windows平台的主流数据库接口。
11.4 SQL数据库编程 • SQL语言作为关系数据库管理系统中的一种通用的结构查询语言,已经被众多的数据库管理系统所采用。 • Delphi与使用SQL语言的数据库管理系统兼容,在使用Delphi开发数据库应用程序时,我们可以嵌入SQL语言编程。
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标准。
11.4.1 SQL语言简介 2. SQL的特点 • SQL是非过程化语言。 • SQL是统一的语言。 • SQL是所有关系数据库的公共语言
11.4.1 SQL语言简介 3.SQL语言的基本语法 ALTER TABLE • 用于改变现存表的结构。 CREATE INDEX • 用于在一个或多个列上创建索引。 CREATE TABLE • 用于创建一个新数据库表。 CREATE VIEW • 用于为一个或多个表创建视图。 DELETE • DELETE从表中删除一个或多个行。
11.4.1 SQL语言简介 2.SQL语言的命令 CREATE DATABASE • 用于创建一个数据库。 DROP • 永久删除数据库对象(表、视图、索引等)。 INSERT • 插入一行到表中。 SELECT • 用于从一个或多个表(或视图)中提取数据。 UPDATE • 用于更新表中的一个或多个行。
11.4.2 使用SQL编程 在Delphi中用于实现对SQL语言编程的主要有Query类组件和StoredProc类组件。主要作用如下: • Query类组件——执行SQL命令,其通过SQL下载得到的数据集可供数据控制组件使用。 • StoredProc类组件——在数据库服务器上创建和执行存储过程,只返回结果。
11.4.2 使用SQL编程 1. Query类组件 • Query类组件是一个数据集组件,他们都是TDataSet的派生类,与Table类组件具有很多共同的特性。在Delphi数据库开发应用中,SQL语句是通过Query类组件传递到要访问的数据库系统的数据库引擎中,并由该数据库引擎具体执行SQL语句,以实现对数据的操作,而不是由Delphi自己来实施具体的SQL动作。 • Query类组件提供了一些Table类组件所不具备的强大功能,例如: • 多表联接查询 • 复杂的嵌套查询和条件查询 • 明确需要按SQL语言进行的操作
11.4.2 使用SQL编程 在SQL编程中使用Query类组件的具体方法步骤如下: • (1) 为Query类组件设置数据库连接。 • (2) 为Query类组件设置SQL属性。 • (3) 执行SQL命令。
11.4.2 使用SQL编程 2. 静态和动态SQL • 在Delphi应用程序中编写和使用的SQL语句有两种:即静态SQL语句和动态SQL语句。前者是在程序设计阶段,将SQL命令文本作为Query类组件的SQL属性值设置。而后者是通过编程在SQL语句中包含一系列的参数,在程序运行过程中各参数值是可变的,即可以动态地给SQL语句中的参数赋值。
11.4.2 使用SQL编程 • 静态方式是把SQL命令作为Query类组件的SQL属性值进行设置,即在程序设计期输入SQL语句。程序运行时,当该Query类组件的Active属性为True时,便自动执行SQL属性中设置的SQL命令。如果是SQL查询命令,那些通过TDataSource组件与该Query类组件相连接的数据感知控件就能显示查询到的结果。
11.4.2 使用SQL编程 3. 带参数的SQL • SQL语句可以不带参数,把字段名称和值固定在SQL语句中。 • 如果用参数的话,查询就灵活得多,应用程序不需要改写SQL语句本身,只要修改参数的值,就能使SQL语句执行不同的查询功能。在执行SQL语句之前,Query类组件会自动把实际的值替换SQL语句中的参数,即使并没有显式地调用Prepare函数。
11.4.2 使用SQL编程 4. 执行SQL语句 • 当指定了SQL语句并且提供了参数后,即编写好SQL程序之后,就可以执行SQL语句了。 • 在设计期和运行期都可以执行SQL语句。要在设计期执行SQL语句,只要把Active属性设为True。不过,在设计期能执行的SQL语句,仅限于SELECT语句,而不能是INSERT、UPDATE或DELETE语句。
11.4.3 示例程序:SQL查询窗体 1. 设计查询窗体 • 在前面图书管理系统的示例程序中,主窗体TMainForm中有一段代码用于创建查询子窗体TQueryBookForm,实现数据查询。 • 这个窗体TQueryBookForm就是现在我们要讲解的用SQL语句实现的查询单元。
11.4.3 示例程序:SQL查询窗体 图 11-17查询窗体界面设计
11.4.3 示例程序:SQL查询窗体 2. 使用TADOQuery • TADOQuery是Query类组件,用来对一个或多个表进行查询。我们要执行的SQL查询语句也是通过该组件的SQL属性来指定的。 • TADOQuery既可以用SQL的DML(Data Manipulation Language)来检索数据,也可以用SQL的DDL(Data Definition Language)来创建或删除数据库的元对象。不过SQL语句必须能够被ADO驱动程序认可。 3. 编写应用逻辑代码
11.5 本章小结 • 数据库是数据的有机集合,便于集中存储和维护互相关联的数据。 • 一个数据库系统主要由数据库、数据库管理系统、数据库应用程序3大部分组成。 • 数据库管理系统(DBMS)是用于描述、管理和维护数据库的程序系统。主要有四种类型:文件管理系统、层次数据库系统、网状数据库系统和关系数据库系统。 • 关系数据库模型是数据的逻辑表示,只需考虑数据间的关系而不必关心数据的物理结构。关系数据库中包括有:表、字段、记录、索引等数据库对象。
11.5 本章小结 • 数据库应用程序与DBMS进行通信,并访问DBMS中的数据,是DBMS实现其对外提供数据信息服务的唯一途径。简单地说,数据库应用程序是一个允许用户插入、修改、删除数据库中数据的计算机程序。 • 结构化查询语言(SQL)是基于关系模型的数据库查询语言,它是一种非过程化的程序语言,也就是说,没有必要写出将如何做某事情,只需写出做到什么就可以了。Delphi编写数据库应用程序时可以使用SQL。 • 数据库往往包含了一些敏感信息。为了保护这些信息,不同的数据库有不同的保护策略。大部分需要用户输入用户名和口令才能登录到数据库服务器。
11.5 本章小结 • 本地数据库位于本地磁盘或局域网上,采取基于文件的锁定策略,数据存储量较小,安全性较差。典型的本地数据库有Paradox、dBASE、FoxPro和Access。 • 远程数据库通常位于远程计算机(数据库服务器)上,用户通过SQL来访问远程数据库中的数据。远程数据库容量大,性能高、安全性好,并提供了基于事务的多用户支持。目前流行的远程数据库系统有SQL Server、Oracle、Sybase、DB2、Informix和MySQL。
11.5 本章小结 • 典型的数据库应用程序的体系结构包括了数据库访问链路和用户界面。对于多层的体系结构还包括用于业务逻辑的中间层。 • 通过Delphi数据库体系结构中的数据感知控件、数据访问组件、数据集组件以及数据模块的使用,可以提高数据库应用程序设计上的可伸缩性和可维护性,并提高开发效率。 • Delphi提供了利用不同的数据库驱动接口访问数据库的多个解决方案,并根据不同的数据访问机制设计了不同的数据集和连接组件,包括BDE、ADO、dbExpress、InterBase等。
11.5 本章小结 • ADO是Microsoft来访问数据库接口。通过ADO可以快速访问各种数据资源,包括关系数据库和非关系型数据库、邮件和文件系统、文本和图像以及任何自定义的业务对象。ADO是目前Windows平台的主流数据库接口。Delphi提供了一组ADO组件,可以通过ADO技术来访问数据库。 • 设计数据库应用程序的步骤包括:创建数据库、设计数据模块、设计用户界面、编写应用逻辑代码。在设计基于ADO的数据库应用程序中,我们在数据模块中需要使用TADOConnection来连接数据库,使用ADO数据集来获取或操纵数据记录。
11.5 本章小结 • 最早的SQL语言由IBM研制并首先用于关系数据库管理系统中。SQL是非过程化语言,是统一的语言,是所有关系数据库的公共语言。 • 企业级大型数据库应用中,SQL语言编程可以说是数据库应用程序开发的核心。由于SQL语言是在后台数据库管理系统(即数据库服务器)上运行的,充分利用数据库管理系统支持的SQL语言及其扩展SQL函数,将极大地减少前台的开发工作量和运行负荷。所以在使用Delphi开发数据库应用程序时我们可以嵌入SQL语言,编写出更复杂、更强大的数据库应用程序。
11.5 本章小结 • 在Delphi中用于实现对SQL语言编程的主要有Query类组件和StoredProc类组件。其中Query类组件在使用SQL语言编程时占居着绝对重要的地位。SQL语句通过Query类组件传递到要访问的数据库系统的数据库引擎中,并由该数据库引擎具体执行SQL语句,以实现对数据的操作,而不是由Delphi自己来实施具体的SQL动作。 • Query类组件的具体方法步骤包括:设置数据库连接、设置SQL属性、执行SQL命令。其中SQL命令可以是静态的,也可以是动态的,并支持参数化查询。