第11章设计数据库应用程序_第1页
第11章设计数据库应用程序_第2页
第11章设计数据库应用程序_第3页
第11章设计数据库应用程序_第4页
第11章设计数据库应用程序_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第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(BorlandDatabaseEngine)数据库驱动接口,它允许用户创建并访问dBASE、Paradox和InterBase数据库;通过BorlandSQLLink,Delphi能直接访问Oracle、Sybase、DB2、SQLServer、Informix以及InterBase数据库服务器。Delphi还支持ODBC、ADO等微软的数据库访问标准。Delphi对于分布式数据库及多层架构的应用还有自己成熟的DataSnap、dbGo等解决方案。11.2.1 本地数据库和远程数据库本地数据库位于本地磁盘或局域网上。典型的本地数据库有Paradox、dBASE、FoxPro和Access。远程数据库通常位于远程计算机(数据库服务器)上,用户通过SQL来访问远程数据库中的数据,正是基于这个原因,远程数据库有时候也叫SQL服务器或者叫RDBMS。典型的SQL服务器有Interbase、Oracle、Sybase、Informix、MicrosoftSQLServer和DB2。11.2.2 选择合适的体系结构

一个数据库应用程序在逻辑上通常由数据库访问链路和用户界面两部分组成。典型的数据库应用程序的体系结构:用户界面与数据访问链路分开的结构11.2.3 连接数据库服务器直接连接数据库服务器11.2.3 连接数据库服务器多层数据库应用程序的体系结构11.2.4 Delphi数据库组件介绍1. 数据集和连接组件BDEADOdbExpressInterBase11.2.4 Delphi数据库组件介绍2. 数据访问组件组件面板DataAccess页上的组件用于连接数据集组件和数据控制组件,以便数据感知控件能无差别地存取数据库,而不受各种数据库访问机制的影响。其中最常用的是数据源TDataSource组件。还包含了TClientDataset和TDataSetProvider组件。11.2.4 Delphi数据库组件介绍3. 数据控制组件Delphi的数据库控制组件通常称为数据感知控件。这是因为数据库控制组件有自动感知数据的能力位于组件面板DataControls页的数据感知控件11.3 基于ADO的数据库应用程序 ADO是ActiveXDataObject的简称,是Microsoft来访问数据库接口。通过ADO可以快速访问各种数据资源,包括关系数据库和非关系型数据库、邮件和文件系统、文本和图像以及任何自定义的业务对象。ADO是目前Windows平台的主流数据库接口。11.3 基于ADO的数据库应用程序ADO组件说明TADODataSet

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

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

用SQL语句查询数据集;可以执行DDL(DataDefinitionLanguage)命令,诸如CREATETABLE,DROPTABLE等TADOStoreProc

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

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

用于连接一个ADO数据库。多个ADO组件可共享这个连接来执行命令、检索数据和数据库对象进行操作。特别是当多个ADO组件需要共享ADO连接并且保持同步时,应当使用ADOConnection来连接数据库11.4 SQL数据库编程SQL语言作为关系数据库管理系统中的一种通用的结构查询语言,已经被众多的数据库管理系统所采用。Delphi与使用SQL语言的数据库管理系统兼容,在使用Delphi开发数据库应用程序时,我们可以嵌入SQL语言编程。11.4.1 SQL语言简介1. SQL的历史 在70年代初,E.E.Codd首先提出了关系模型。70年代中期,IBM公司在研制SYSTEMR关系数据库管理系统中研制了SQL语言,最早的SQL语言(叫SEQUEL2)是在1976年11月的IBMJournalofR&D上公布的。1979年ORACLE公司首先提供商用的SQL,IBM公司在DB2和SQL/DS数据库系统中也实现了SQL。1989年,美国ANSI采纳在ANSIX3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSISQL89,该标准替代ANSIX3.135-1986版本。该标准也被国际标准化组织(ISO)和美国联邦政府所采纳。目前,所有主要的关系数据库管理系统都支持并遵守ANSISQL89标准。2. SQL的特点SQL是非过程化语言。SQL是统一的语言。SQL是所有关系数据库的公共语言11.4.1 SQL语言简介3.SQL语言的基本语法

ALTERTABLE用于改变现存表的结构。

CREATEINDEX用于在一个或多个列上创建索引。

CREATETABLE用于创建一个新数据库表。

CREATEVIEW用于为一个或多个表创建视图。

DELETEDELETE从表中删除一个或多个行。11.4.1 SQL语言简介2.SQL语言的命令

CREATEDATABASE用于创建一个数据库。

DROP永久删除数据库对象(表、视图、索引等)。

INSERT插入一行到表中。

SELECT用于从一个或多个表(或视图)中提取数据。

UPDATE用于更新表中的一个或多个行。11.4.1 SQL语言简介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. 带参数的SQLSQL语句可以不带参数,把字段名称和值固定在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. 使用TADOQueryTADOQuery是Query类组件,用来对一个或多个表进行查询。我们要执行的SQL查询语句也是通过该组件的SQL属性来指定的。TADOQuery既可以用SQL的DML(DataManipulationLanguage)来检索数据,也可以用SQL的DDL(DataDefinitionLanguage)来创建或删除数据库的元对象。不过SQL语句必须能够被ADO驱动程序认可。3. 编写应用逻辑代码11.5 本章小结数据库是数据的有机集合,便于集中存储和维护互相关联的数据。一个数据库系统主要由数据库、数据库管理系统、数据库应用程序3大部分组成。数据库管理系统(DBMS)是用于描述、管理和维护数据库的程序系统。主要有四种类型:文件管理系统、层次数据库系统、网状数据库系统和关系数据库系统。关系数据库模型是数据的逻辑表示,只需考虑数据间的关系而不必关心数据的物理结构。关系数据库中包括有:表、字段、记录、索引等数据库对象。11.5 本章小结数据库应用程序与DBMS进行通信,并访问DBMS中的数据,是DBMS实现其对外提供数据信息服务的唯一途径。简单地说,数据库应用程序是一个允许用户插入、修改、删除数据库中数据的计算机程序。结构化查询语言(SQL)是基于关系模型的数据库查询语言,它是一种非过程化的程序语言,也就是说,没有必要写出将如何做某事情,只需写出做到什么就可以了。Delphi编写数据库应用程序时可以使用SQL。数据库往往包含了一些敏感信息。为了保护这些信息,不同的数据库有不同的保护策略。大部分需要用户输入用户名和口令才能登录到数据库服务器。11.5 本章小结本地数据库位于本地磁盘或局域网上,采取基于文件的锁定策略,数据存储量较小,安全性较差。典型的本地数据库有Paradox、dBASE、FoxPro和Access。远程数据库通常位于远程计算机(数据库服务器)上,用户通过SQL来访问远程数据库中的数据。远程数据库容量大,性能高、安全性好,并提供了基于事务的多用户支持。目前流行的远程数据库系统有SQLServer、Oracle、Sybase、DB2、Informix和MySQL。11.5 本章小结典型的数据库应用程序的体系结构包括了数据库访问链路和用户界面。对于多层的体系结构还包括用于业务逻辑的中间层。通过Delphi数据库体系结构中的数据感知控件、数据访问组件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论