第六章 Delphi 7 与数据库

85
第第第 Delphi 7 第第第第 6.1 第第第第第 6.2 Delphi7 第第第第第第第第 6.3 第第第第第 6.4 TField 第第第第第 6.5 第第第第第第 6.6 TQuery 第第 6.7 BDE 第第第第 6.8 ADO 第第

description

第六章 Delphi 7 与数据库. 6.1 数据库简介 6.2 Delphi7 的数据库访问机制 6.3 数据库组件 6.4 TField 对象的使用 6.5 数据集的操作 6.6 TQuery 组件 6.7 BDE 综合实例 6.8 ADO 技术. 6.1 数据库简介. 数据库 ( Database , DB )是指为了满足一定范围内众多用户的需要,在计算机中建立的一个可以长期存储的、有组织的、可共享的数据集合。一个数据库可以包含许多数据表文件、索引文件以及其他文件。 - PowerPoint PPT Presentation

Transcript of 第六章 Delphi 7 与数据库

Page 1: 第六章  Delphi 7 与数据库

第六章 Delphi 7 与数据库 6.1 数据库简介 6.2 Delphi7 的数据库访问机制 6.3 数据库组件 6.4 TField 对象的使用 6.5 数据集的操作 6.6 TQuery 组件 6.7 BDE 综合实例 6.8 ADO 技术

Page 2: 第六章  Delphi 7 与数据库

6.1 数据库简介 数据库( Database , DB )是指为了满足一定范围内众多用户的需要,在计算机中建立的一个可以长期存储的、有组织的、可共享的数据集合。一个数据库可以包含许多数据表文件、索引文件以及其他文件。 数据库系统( Database System , DBS )是指具有数据管理功能的计算机系统,它一般由数据库、数据库管理系统( Database Man

ngement System , DBMS )和应用系统构成。 数据库管理系统为用户或应用程序提供访问数据库的方法,包括数据库的建立、查询、更新以及各种数据控制等。

Page 3: 第六章  Delphi 7 与数据库

数据库系统根据数据的组织方式,主要分为层次数据库系统、网状数据库系统、关系型数据库系统和面向对象数据库系统等几类。

Page 4: 第六章  Delphi 7 与数据库

Delphi 支持关系型数据库,关系型数据库由表组成,一个关系用一个二维表来定义:表的行定义了事物的一组属性数据,称为记录;表的列定义了事物的某种属性,称为字段。 名称 首都 面积 人口

Argentina Buenos Aires 2777815 32300003

Bolivia La Paz 1098575 7300000

Page 5: 第六章  Delphi 7 与数据库

一个数据库应用程序在逻辑上通常由两部分组成:数据库访问模块和用户界面,这就是数据库应用程序的层次结构。在单层的数据库应用程序中,应用程序和数据库共享一个文件系统,它们使用本地数据库或文件来存取数据;在双层的数据库应用程序中,客户程序提供用户界面,通过各种数据访问引擎(如 BDE 、ADO 等)从远程数据库服务器获取数据;在多层的数据库应用程序中,客户程序、应用服务器和远程服务器分布在不同的机器上。

Page 6: 第六章  Delphi 7 与数据库

6.2 Delphi7 的数据库访问机制 一、 Delphi 与数据库 二、 Delphi 的数据库体系 三、 Borland 数据库引擎( BDE ) 四、 Database Desktop 的使用 五、 数据库浏览器( Database Explore

r )

Page 7: 第六章  Delphi 7 与数据库

一、 Delphi 与数据库 Delphi 提供丰富的组件来访问各种类型的数据库,例如,组件面板的 BDE 页、

ADO 页和 InterBase 页,以及其他页上的一些通用组件都用于数据库的访问 。 Delphi 利用 BDE 或 ADO 提供的驱动程序,可以访问不同的数据库。 BDE 提供的驱动程序多用于访问本地数据库,例如 Paradox 和 dBASE 。

Page 8: 第六章  Delphi 7 与数据库

二、 Delphi 的数据库体系

Delphi集成开发环境

数据库桌面Database Desktop

Delphi 应 用 程序 Borland

数据库引擎

远程数据库OracleSybaseSQL Server

本地数据库dBASEParadoxASCIIBDE 配置工具

SQL 连接

ODBC 驱 动 程序

Page 9: 第六章  Delphi 7 与数据库

三、 Borland 数据库引擎( BDE ) Borland 推出了一个数据库引擎( Borla

nd Database Engine , BDE ),通过它可以访问本地数据库和远程数据库中的数据,开发出具有可伸缩体系结构的数据库应用程序。有了 BDE ,就可以将一组相关的表放进一个目录中,给这组相关表起个别名,从而得到一个逻辑表集合,即虚拟数据库。通过 BDE 中的这些虚拟数据库,就可以连接到这些表。

Page 10: 第六章  Delphi 7 与数据库

BDE 管理器( BDE Administrator )是设置和管理 BDE 的工具,它可以用来管理 BDE 中的数据库别名和驱动器。通过 BDE 管理器,建立一个虚拟数据库,其操作步骤如下: 步骤一:执行【开始】→【程序】→【 Borla

nd Delphi7 】→【 BDE Administrator 】菜单命令,打开 BDE 管理器窗口。 步骤二:右击 Database 页标签,选择【 Obje

ct 】→【 New 】菜单项,弹出选择数据库驱动器的对话框,根据需要选择适当的驱动器。单击 OK 按钮,关闭该对话框,回到 BDE 管理器窗口。

Page 11: 第六章  Delphi 7 与数据库

步骤三:在 BDE 管理器左窗口的新建项目中,输入一个新的数据库别名 MyData 。

步 骤 四 : 在 Path 框 中 输 入 D:\ Data(该文件夹由用户事先建立),为数据库别名 MyData 指定路径 D:\ Data 。注:要删除别名,可在 Database 页标签中选择要删除的别名,右击后选择 Dele

te 即可。也可以使用后面介绍的数据库桌面和数据库浏览器定义和删除数据库别名。

Page 12: 第六章  Delphi 7 与数据库

四、 Database Desktop 的使用 Database Desktop 是 Delphi 中提供的数据库管理工具,使用它可以建立和修改数据表结构,完成简单数据的输入及其他操作。 选择执行菜单【 Tools 】→【 DataBase

Desktop 】项,或【开始】→【程序】→【 Borland Delphi7 】→【 Database Desktop 】菜单项,可以打开 Database Desktop 的操作窗口。

Page 13: 第六章  Delphi 7 与数据库

1. 定义数据库别名 选择执行菜单【 Tools 】→【 Alias Ma

nager 】项,打开别名管理操作窗口。 单击【 New 】按钮,在 Database Alias 和 Path 框中分别输入新的别名和路径,可以定义新的别名。 单击【 Remove 】按钮可以删除别名。

Page 14: 第六章  Delphi 7 与数据库

2. 设置工作目录及私有目录 工作目录是指数据库工作平台首先找到文件的地方,私有目录是用户自己使用的目录,其他网络用户无法看到这个目录。 工作目录菜单项“ Work Directory” 及私有目录菜单项“ Private Directory”都在“ File” 菜单下。

Page 15: 第六章  Delphi 7 与数据库

3. 建立数据表结构在数据库桌面环境下执行菜单【 File 】→【 New 】→【 Table 】项,选择数据库类型 Paradox ,单击 Ok ,进入表结构定义窗口。

Page 16: 第六章  Delphi 7 与数据库

4. 保存数据表文件 可以将数据表保存在当前目录(当前目录就是工作目录),也可以指定数据库别名,即为数据表确定了相应的文件夹位置,还可以选择其他的文件夹。

Page 17: 第六章  Delphi 7 与数据库

5. 建立索引 在建立数据表的结构后,还要根据功能的要求对数据表定义关键字。定义关键字的目的是为了对数据表建立一种索引,以便实现多表间的同步操作以及实现对数据表分类排序和快速查询。 要建立一个索引,就要指定一个索引关键字(它由一个或几个连续的字段组成)。同时系统要为每个索引建立一个对应的索引文件。 索引可分为主索引与次索引两种。主索引关键字所对应的数据必须唯一,且必须是最前面的几个字段,而次索引没有这个限制。每个文件只能建立一个主索引,而次索引可以建立多个。

Page 18: 第六章  Delphi 7 与数据库

建立主索引 在数据库桌面的结构定义窗口,将光标移到关键字字段的 Key 列的下面,双击或按空格键,系统在该位置显示一个“ *”号,此字段即成了关键字字段。 建立次索引 在数据库桌面的结构定义窗口,单击 Table Pr

operties 下拉按钮,选择 Secondary Indexes菜单项,单击 Define 按钮,打开“ Define Secondary Indexes”对话框,

选择次关键字字段(可选择多个),完成后按OK 按钮。这时会出现 Save Index As 对话框,在该对话框中指定次索引文件名。

Page 19: 第六章  Delphi 7 与数据库

6. 设置有效性检查 点击 Table Properties 下拉按钮,选择 V

alidity Checks 功能项,然后用鼠标选择一个字段,便可以对该字段设置有效性检查。7. 设置口令 点击 Table Properties下拉按钮,选择Password Security功能项,在弹出的对话框中输入指定的口令,即可对该数据表实现数据保护。

Page 20: 第六章  Delphi 7 与数据库

8. 设置参照完整性 点击 Table Properties 下拉按钮,选择 T

able Lookup 功能项,可以进行参照完整性设置。9. 输入数据 数据表中数据的输入,一般来说,既可以在数据库桌面环境下进行,也可以在应用程序的运行环境进行。但有些类型的字段(例如,备注型M、位图型 G及对象型 O )必须由应用程序提供相应的功能,在程序运行状态下,通过执行某种操作才能完成信息的输入。

Page 21: 第六章  Delphi 7 与数据库

五、数据库浏览器 数据库浏览器可用于定义数据库别名、查询或编辑数据库中的各类信息,如数据库的参数设置、各数据表文件的结构及数据,也可以使用 SQL语句进行查询。 选择执行【 Database 】→【 Explore

r 】菜单命令,打开数据库浏览器,也可以选择执行【开始】→【程序】→【 Borland Delphi7 】→【 SQL Explorer 】菜单命令打开数据库浏览器。

Page 22: 第六章  Delphi 7 与数据库

6.3 数据库组件 Delphi 使用 VCL 将 BDE封装成组件,为数据库应用程序提供统一的访问接口,组件面板的 BDE 页、 Data Access 页和

Data Controls 页提供了不同的数据库组件。其中, BDE 页和 Data Access 页的组件为非可视组件, Data Controls 页的组件为可视组件。

Page 23: 第六章  Delphi 7 与数据库

BDE 组件集( BDE 页):提供了以 BDE 方式访问数据库的数据表和查询等数据集组件,如 TTable 、 TQuery 、 TStoredProc 等;

数据访问组件集( DataAccess 页):提供了数据源等连接组件; 数据控制组件集( DataControls 页):用来浏览和编辑数据,为用户使用数据库提供接口,如 TDBGrid 、 TDBEdit 、

TDBMemo 等。

Page 24: 第六章  Delphi 7 与数据库

一、 TTable 组件 TTable 组件用于连接一个数据表并对数据表的各种状态进行控制,它通过 BDE从一个数据库表格中取得数据,并通过

TDataSource 组件将数据传递给一个或多个数据控制组件,或者反之,从数据控制组件得到的信息通过 BDE传递给数据库。 TTable 组件既可以访问本地的数据库,也可以访问 ODBC 数据库,还可以访问远程数据库。

Page 25: 第六章  Delphi 7 与数据库

1. TTable 组件连接数据表的一般步骤 步骤一:把一个 TTable组件放到窗体上,设置 DatabaseName属性指定要访问的数据库。 步骤二:设置 TableName属性指定要访问的表。 步骤三:把一个 TDataSource 组件放到窗体上,设置 DataSet属性指向该 TTable组件。 步骤四:把一个数据控制组件放到窗体上,设置 DataSource属性指向该 DataSource组件。 步骤五:把 TTable 组件的 Active 属性设为True 。

Page 26: 第六章  Delphi 7 与数据库

2. 字段组件的访问 字段组件对应着数据表中实际的字段,读写数据表中的字段值是通过访问相应的字段组件进行的。一般采用的方法有两种:使用数据集组件的 Fields属性可以通过 Fields属性的下标(即索引号)来访问各字段,索引号从 0开始。例如,

Table1.Fields[0]表示当前记录的第一个字段的数据。如:Table1.Fields[0].AsString:=Edit1.Text; Ed

it1.Text:=Table1.Fields[0].AsString;

Page 27: 第六章  Delphi 7 与数据库

使用数据集组件的 FieldByName 方法用这种方法访问字段组件时,必须知道数据表中各个字段的名字。例如:Edit1.Text:=Table1.FieldByName('Name').AsString;

Page 28: 第六章  Delphi 7 与数据库

3. 记录的增加与删除 Insert 方法:在当前记录之前插入一条新的记录。 Append 方法:在文件的最后追加一条新的记录。 Delete 方法:删除数据表中的当前记录。

EmptyTable 方法:删除表中的所有记录。使用该方法前必须将表关闭,删除的数据是不能恢复的,只删除记录数据而保留表的结构。例如:Table1.Active:=False;Table1.EmptyTable;

Page 29: 第六章  Delphi 7 与数据库

DeleteTable 方法:删除一个与 TTable组件相连的数据表。使用 DeleteTable方法之前,数据表必须关闭。该方法不仅删除表中的所有记录,而且也删除表的结构。

Page 30: 第六章  Delphi 7 与数据库

二、 TDataSource 组件 TDataSource 组件是联系数据集组件与数据控制组件的桥梁。其常用属性如下: AutoEdit属性:该属性值是一个布尔值,用于说明是否将数据集置于编辑状态,为 Ture时允许用户编辑数据集中的数据。 DataSet属性:指明与当前数据源组件相联系的数据集组件对象的名字。 Enabled属性:该属性值是一个布尔值,决定了与此数据源组件相连的数据控制组件是否显示数据。为 True (默认值)时,数据控制组件将显示数据。

Page 31: 第六章  Delphi 7 与数据库

三、数据控制组件 数据控制组件也称为数据感知组件,它应用程序的接口,让用户能浏览和操作数据库。 数据控制组件在 Data Controls 页上。 数据控制组件与数据集组件之间的联系是通过数据源组件 TDataSource 来实现的。

Page 32: 第六章  Delphi 7 与数据库

数据控制组件常用属性: DataSource :将此属性设置为窗体上数据源组件的名称,建立数据控制组件与数据源组件之间的联系。 DataField :用来确定访问的是数据集中的哪一字段。 TDBGrid 组件和 TDBNavigator 组件访问数据集中所有的字段,所以没有这一属性。 Enabled :决定数据控制组件能否接受来自鼠标、键盘和定时器事件的消息。 ReadOnly :确定是否可以在数据浏览中编辑修改字段的值。默认值为 False ,也就是可以在其中编辑修改字段的值,反之,则不可以。

Page 33: 第六章  Delphi 7 与数据库

1. TDBGrid组件 TDBGrid 组件的作用是一个将数据集记录显示在网格中,并且可以对其中的数据进行编辑修改。 Columns属性。指定 TDBGrid对象中各栏目的特性,如栏目的标题、栏目的宽度及颜色、在该栏目中显示的字段的名称、数据在栏目中的位置方式等。

Page 34: 第六章  Delphi 7 与数据库

2. TDBNavigator 组件 TDBNavigator 组件是用来在数据集中浏览数据和编辑数据的,它由一组控制按钮组成,通过这些控制按钮,用户可以完成在数据集中移动记录指针,插入、删除、编辑、确认、取消、刷新记录数据等。它一般与其他数据控制组件(如

TDBGrid 或 TDBEdit )一起使用。

Page 35: 第六章  Delphi 7 与数据库

设置按钮 TDBNavigator 组件中提供了 10 个按钮,设置各按钮的 VisibleButtons 属性可以控制按钮的显示与否。设置按钮提示字符串TDBNavigator组件的 Hints属性和 Show

Hint属性就用来设置和显示提示字符串。设置按钮的操作方式 CanfirmDelete 属性。该属性值是一个布尔值,用于控制执行删除操作时是否弹出确认对话框缺省值为 True 。

Page 36: 第六章  Delphi 7 与数据库

3. TDBText 组件 TDBText 组件是用来显示数据集里当前记录中一个特定字段的值,随着记录指针的移动,其显示的内容也不断变化,这是它与 TLabel 组件不同的地方。用

TDBText 组件显示的字段值是只读属性的。如果用户要修改数据,就需要使用TDBEdit 组件或者 TDBMemo 组件。

TDBText 组件的重要属性有 DataSource 和 DataField 属性。

Page 37: 第六章  Delphi 7 与数据库

4. TDBEdit 组件 TDBEdit 组件用来显示和编辑数据集里当前记录中一个特定字段的值,随着记录指针的移动,其显示的内容也不断变化。 常用属性有 DataSource 、 DataField 、

Enabled 和 ReadOnly 。

Page 38: 第六章  Delphi 7 与数据库

5. TDBMemo 组件 TDBMemo 组件用来显示和编辑数据集中的多行文本, TDBMemo 的 Text 属性代表了该字段的内容。

TDBMemo 组件除了具有其他数据控制组件所具有常用属性以外,还具有以下不同的属性: AutoDisplay 属性:决定是否自动显示数据集中备注类型的字段值。 Alignment属性:说明文本的对齐方式。 MaxLength 属性:限定可以输入的最大字符数。值为 0时表明不限制最大字符数。 WordWrap 属性:指明文本是否自动换行。

Page 39: 第六章  Delphi 7 与数据库

6. TDBCheckBox 组件 TDBCheckBox 组件是允许用户选择或不选择一个值的数据控制组件, TDBC

heckBox 组件适合于表达布尔类型数据的字段。 TDBCheckBox 组件除了完成 CheckBox组件的功能外,主要是用来显示和修改一个布尔类型数据的字段值。

Page 40: 第六章  Delphi 7 与数据库

7. TDBListBox 组件 TDBListBox 组件用来提供给用户一个可选的列表,用户可以从中选取适当的值来修改当前记录中的特定字段值。它与 TListBox组件类似。

Page 41: 第六章  Delphi 7 与数据库

8. TDBComboBox 组件 TDBComboBox组件与 TDBListBox组件的功能相似,其用法与 TDBListBox组件相应的属性一样。 9. TDBRadioGroup 组件 TDBRadioGroup 组件是允许用户在一组选项中选取唯一一项的数据控制组件,它必须指向数据集中一个特定的字段。TDBRadioGroup 组件与普通单选框用法相似。

Page 42: 第六章  Delphi 7 与数据库

10. TDBImage 组件 TDBImage 组件用来显示和编辑当前记录中 BLOB 类型的图形字段。该组件除了可以在窗体中显示数据集里的图形数据外,还允许通过剪贴板对图形数据进行编辑操作。其特殊的属性有: Picture 属性:保存 DBImage 对象中的图形数据。 Center 属性:控制是否将图形自动显示在对象的中心。该属性默认值为 False ,图形显示在 DBImage 对象的左上角。

Page 43: 第六章  Delphi 7 与数据库

6.4 TField 对象的使用 一、动态字段对象和永久字段对象 二、 设置字段属性 三、对字段进行格式化 四、字段的有效性检查 五、创建查找字段 六、创建计算字段

Page 44: 第六章  Delphi 7 与数据库

一、动态字段对象和永久字段对象 用 TField 字段对象可以方便地访问数据集中的字段。当把一个数据集放到窗体上并且打开它时, Delphi会为数据集中的每一个字段自动生成一个动态的字段对象。当数据集关闭时,这些字段对象也跟着消失。 动态字段对象的最大特点是适应性强,动态字段对象的不足之处是:要想改变字段的显示属性、数据格式,就要编写代码。不能把某些字段暂时隐去,也不能增加新的字段。

Page 45: 第六章  Delphi 7 与数据库

永久字段对象的最大好处是可以在设计时设置它的属性。此外,永久字段对象还具有以下优势:选择部分字段;增加新的字段,包括“计算字段”等;在永久字段对象列表中删除某些需要保护的字段,避免用户访问这些特定的字段;在数据库查询或特定数据表的字段基础上定义新字段,代替现存的字段;改变原有字段的显示和编辑属性。 对于同一个数据集来说,动态字段对象和永久字段对象不能同时存在。

Page 46: 第六章  Delphi 7 与数据库
Page 47: 第六章  Delphi 7 与数据库

二、 设置字段属性为数据集创建永久 TField 对象步骤如下: 步骤一:设置一个数据集组件(如 Ttable )和数据表关联; 步骤二:双击 TTable 组件,或右击 Ttable 组件,选择“ Fileds Editor” 菜单命令,将打开字段编辑器; 步骤三:右击字段编辑器窗口的空白处,弹出快捷菜单,单击“ Add Fields” 菜单命令,打开“ Add Fields” 对话框; 步骤四:选择一个或几个字段,单击 OK按钮。Delphi 将根据选择的字段创建永久字段对象。

Page 48: 第六章  Delphi 7 与数据库

TField对象常用属性 :Alignment :设置字段在数据组件中的对齐方式Currency :仅用于数字字段, True 表示按货币格式显示DisplayFormat :设置字段在数据组件中的显示格式DisplayLabel :设置字段在数据表格中的列标签EditFormat :设置字段在编辑时的显示格式EditMask :设置用户编辑数据时必须遵守的规则FieldKind :指定字段的生成类型FieldName :指定字段的名称Index :指定字段在数据集中的序号Max Value :指定字段的最大值Min Value :指定字段的最小值Name :指定永久字段对象的内部名称。Size :指定字段的长度(以字符为各单位)

Page 49: 第六章  Delphi 7 与数据库

三、对字段进行格式化对字段进行格式化,操作步骤如下: 步骤一:双击 TTable 组件,在字段属性编辑器中添加字段后,选定 BIRTHDAY字段。 步骤二:在对象浏览器( Object Inspector)窗口中双击“ EditMask”属性,将打开“ Input Mask Editor”对话框。 步骤三:为选定的字段设置掩模码并测试,然后单击“ OK”按钮关闭对话框。

Page 50: 第六章  Delphi 7 与数据库

四、字段的有效性检查 字段的有效性可以保证字段中的数据与预定义的数据格式、限定范围、条件等相符。可以使用 TField对象的 Validation事件来控制字段的有效性规则。

Page 51: 第六章  Delphi 7 与数据库

五、创建查找字段 使用查找字段可以在表格中添加一个下拉列表框,使得用户可以在数据集对象设定的一些选项中选择,而不必盲目地用键盘输入数据。用这种方法可以确保用户输入的总是有效数据,从而不必总是要进行有效性检查。

Page 52: 第六章  Delphi 7 与数据库

六、创建计算字段 Delphi 的 TField对象还允许创建另一种特殊的字段——计算字段。计算字段是根据数据表中的字段数据计算出来的,用户可以通过计算字段很直观地看到几个字段的计算结果,但数据表不会将计算字段的数据存入内存,因此计算字段不会被存储在数据表中,它只是用来显示某些计算结果的。

Page 53: 第六章  Delphi 7 与数据库

6.5 数据集的操作 一、数据集的打开和关闭 二、 数据集的状态 三、移动记录指针 四、 限制记录集 五、查找记录 六、数据集的修改 七、建立数据表的主从关系

Page 54: 第六章  Delphi 7 与数据库

一、数据集的打开和关闭1. 设置 Active 属性Active 属性用来说明数据表文件的打开状态。通过设置 Active 属性来决定一个数据集组件与数据表数据之间的联系。 2. 调用 Open 和 Close 方法 使用 Open 和 Close 方法也能打开和关闭一个数据集。

Page 55: 第六章  Delphi 7 与数据库

二、 数据集的状态 数据集的状态( State 属性)决定了当前能够对数据集进行的操作。在程序运行期间,可以通过检测数据集的只读属性 State 来确定其当前状态。

Page 56: 第六章  Delphi 7 与数据库

三、移动记录指针 在对数据表操作时,系统使用一个记录指针指向当前正在访问的记录。浏览数据表就是通过移动记录指针来查看数据表中的记录。 Bof 属性: Bof 属性为布尔值。为 True 表明当前记录指针所处的位置为数据集的第一条记录; Eof 属性: Eof 属性为布尔值。为 True 表明当前记录指针所处的位置为数据集的最后一条记录; First方法:将记录指针移至数据集的第一条记录处,并使之成为当前记录,同时将 Bof属性值设置为 True。

Page 57: 第六章  Delphi 7 与数据库

Last方法:将记录指针移至数据集的最后一条记录处,并使之成为当前记录,同时将 Eof属性值设置为 True 。 Next方法:将记录指针后移一条记录,并使之成为当前记录。如果记录指针指向了数据集的最后一条记录,将 Eof属性设置为 True。 Prior方法:将记录指针前移一条记录,并使之成为当前记录。如果记录指针指向了数据集的第一条记录,将 Bof属性设置为 True。 MoveBy方法:将记录指针从当前记录开始向后或向前移动若干条记录。格式如下:function MoveBy(Distance:Integer):Integer;

Page 58: 第六章  Delphi 7 与数据库

四、 限制记录集Delphi 提供了以下两种常用的限制记录集的方法。1. SetRangeStart方法和 SetRangeEnd方法 SetRangeStart方法和 SetRangeEnd方法可以过滤记录, SetRangeStart方法用来限制记录集的开始, SetRangeEnd方法用来限制记录集的结束,调用 ApplyRange 方法使限制生效。调用 CancelRange 方法取消为数据表设定的限制范围。这种限制记录集的方法要求指定数据集的检索字段。

Page 59: 第六章  Delphi 7 与数据库

2. 使用数据集的 Filter属性 Delphi 提供了一种更简便的限制记录集的方法:用数据集的 Filter属性。 Filter属性值是一个用来指明数据表过滤标准的字符串, Filtered属性决定了过滤器是否起作用。当使用 Filter属性时,不必指定数据集的检索字段,各字段或字段的组合都可以运用该属性。

Page 60: 第六章  Delphi 7 与数据库

五、查找记录1. 使用 FindKey 方法使用 Ttable 的 FindKey 方法或 FindNeare

st 方法,可以查找数据表中满足条件的记录,要查找的表必须按查找关键字建立了索引。其定义如下:function FindKey(Const KeyValues:Array of Const):Boolean; procedure FindNearest(Const KeyValues:

Array of Const);

Page 61: 第六章  Delphi 7 与数据库

2. 搜索特定记录( Locate )FindKey 和 FindNearest 方法只能在 TTa

ble 组件中使用,如果使用的是 TQuery或 TStoreProc 组件,就要使用 Locate方法来查找记录。Locate函数适合于所有数据集组件,也适合于 TTable 组件。 Locate函数可以在任何表中基于任何类型的字段来查找记录,而不管表格是否建立了索引。 Loca

te函数定义如下:function Locate(const KeyFields:string;Const KeyValues:Variant;Options):Boolean;

Page 62: 第六章  Delphi 7 与数据库

六、数据集的修改以下为与数据集修改有关的属性和方法。 ReadOnly 属性:确定相应的数据集是否为只读方式。 True 表示只读,不能修改。 Exclusive 属性:确定相应的数据集是否为独占方式。如果设定为 True ,则其他程序不能使用该数据集,否则可同时使用。 CanModify 属性:确定相应的数据集是否可以改变。当以只读方式打开数据集时,该属性的返回值为 False 。 Modified 属性:标记相应的数据集是否已被修改过。当其值为 True时,表示已被修改过。

Page 63: 第六章  Delphi 7 与数据库

Delete 方法:删除数据集中的当前记录,并使当前记录指向下一条记录。 Edit 方法:使数据集处于编辑状态,此时才可对数据集进行编辑修改操作。 Insert 方法:在当前记录之前插入一个新的空记录,并将新记录作为当前记录。用户向记录的字段中输入数据后,通过调用 Post 方法将这些更改提交给数据库。 Post 方法:使当前对数据集所作的修改有效,即对数据集所作的修改写入到数据库中。调用了 Edit 、 Insert 或 Append 等方法后,需要调用 Post 方法将修改的数据写回数据库。 Cancel 方法:使当前对数据集所作的修改无效,即取消对数据集所作的修改。

Page 64: 第六章  Delphi 7 与数据库

AppendRecord 方法与 InsertRecord 方法:这两个方法分别与 Append 方法和Insert 方法相似,它们都是用于在表中插入一条新记录,但 AppendRecord 方法和 InsertRecord 方法比 Append 方法和 Insert 方法更简单、更方便一些,不需调用 Post 方法。其过程形式如下:

procedure AppendRecord(Const Values: Array of Const);

procedure InsertRecord(Const Values: Array of Const);

Page 65: 第六章  Delphi 7 与数据库

SetFields 方法:以参数的形式来修改当前记录中的多个字段值。其过程形式如下: procedure SetFields(Const Values: Arra

y of Const) Refresh 方法:从数据库中取出数据来更新数据集的内容。它保证了应用程序拥有数据库的最新数据。

Page 66: 第六章  Delphi 7 与数据库

七、建立数据表的主从关系 设置表之间的主从关系是通过设置从表的 MasterSource 属性和 MasterField 属性来实现的。且从表必须是按 MasterFi

eld 属性中指定的字段建立了索引的。

Page 67: 第六章  Delphi 7 与数据库

6.6 TQuery 组件 一、查询数据库组件 TQuery 二、查询语句 Select简介

Page 68: 第六章  Delphi 7 与数据库

一、查询数据库组件 TQuery1. TQuery 组件与 TTable 组件的比较TQuery 组件和 TTable 组件同属于数据集组件,它们在很多地方是相似的,但二者又有区别。主要表现在以下几个方面: TQuery 组件主要功能是用来支持 SQL语言访问本地或远程数据库。 TQuery 组件允许用户同时访问多个表,而 T

Table 组件一次只能访问一个表格。 TQuery 组件访问的是表格中的特定数据内容;而 TTable 组件只有在提供过滤或限定检索范围时才能访问表格中的特定数据内容,否则,

TTable 组件访问的将是表格中的全部数据。

Page 69: 第六章  Delphi 7 与数据库

2. 直接设置 SQL 实现查询SQL 是一种结构型的数据库语言,包括定义语言 DDL 与处理语言 DML 。 DDL用于创建与维护数据库的结构,而 DM

L 用于维护与查询数据库中的数据。 DML 中包括选择 Select 、插入 Insert 、更新 Update 、删除 Delete 等语句。其中最常用的 Select语句的格式如下:

Select < 字段名表 > From < 数据表名表 > [Where < 查询条件 >] [Order By <排序字段 >] [Group By < 分组字段落 >]

Page 70: 第六章  Delphi 7 与数据库

3. 动态执行 SQL 语句 为了在程序中动态设置 SQL并执行查询,可在窗体中设置一个按钮,并在该按钮的事件处理程序中对 Query 对象设置相应的 SQL语句。

Page 71: 第六章  Delphi 7 与数据库

4. 通过组装 SQL 语句实现查询 用户一般对数据库的设置及 SQL语句不太熟悉,通常情况是让用户提供必要的信息,在程序中按用户提供的信息装配成 SQL语句。 5. 通过设置 SQL 参数实现查询 灵活设置 SQL语句的另一种办法是在 S

QL语句中引入参数,即设置带参数的 SQL语句,由用户设置该参数所对应的值,程序中将用户设定的值传送到参数中,并执行该 SQL语句,从而实现动态查询。设置带参数的 SQL语句时,必须在参数前加上“ :”,“ :”后紧跟参数。

Page 72: 第六章  Delphi 7 与数据库

6. 执行查询 要在设计期执行查询,只要把 Active 属性设为 True 即可。不过,在设计期能执行的 SQL语句仅限于 Select语句,不能是 Insert 、 Update 或 Delete语句。要在运行期执行查询,可以调用 Open或 ExecSQL函数。 Open 适合于执行 S

elect语句,而 ExecSQL 适合于执行 Insert 、 Update 或 Delete语句,不返回结果。在调用 Open 或 ExecSQL之前,应首先调用 Close 方法关闭数据集。

Page 73: 第六章  Delphi 7 与数据库

二、查询语句 Select 简介 查询语句 Select 是使用最多的 SQL语句,它完成的是数据库的查询功能。 Distinct子句: Distinct的作用是对某个表格所选择的字段数据中略过重复的记录,即针对某些字段查询出来的记录结果是唯一的。例如,字段 NAME、 SEX、MAJOR_KEY的值均相同的记录只显示一个,可用如下语句:Select distinct NAME,SEX, MAJOR_KEY From

Student Top和 Order By子句: Top子句实现从第一条记录开始返回特定条数的记录的功能。

Page 74: 第六章  Delphi 7 与数据库

Order By子句:表示排序,参数 ASC表示递增(默认值), DESC表示递减。例如,按 birthday由大到小显示各记录相应字段的数据,可用如下语句:Select NAME,SEX,BIRTHDAY From Student Order By

BIRTHDAY desc Group By子句:依据指定的字段,将具有相同数据的记录合并成一条。可以使用求和 Sum 、求平均值 Avg 、求最小值Min 、求最大值Max 、求记录数 Count 等聚集函数以及字符串函数等。 Having子句:指定一特定的分组记录,并满足 Having所指定的条件或状态,但条件只针对分组后的记录设置。 In 操作数:要查询的字段值包含在所指定的内容中。 Like 操作数:用来将一字符串与另一特定字符串样式比较,并将符合该字符串样式的记录过滤出来。

Page 75: 第六章  Delphi 7 与数据库

6.7 BDE 综合实例 一、学生信息管理( TTable ) 二、学生信息管理( TTable 、 TQuer

y )

Page 76: 第六章  Delphi 7 与数据库

6.8 ADO 技术 一、设置 ODBC 数据源 二、连接 Access 数据库 三、 ADO 常用组件 四、 ADO 应用实例

Page 77: 第六章  Delphi 7 与数据库

一、设置 ODBC 数据源 ODBC 是一种采用开放式结构进行数据库连接的接口标准,是一种开放的独立于厂商的 API 应用程序接口,可以跨平台访问个人计算机、小型计算机及主机系统。

Page 78: 第六章  Delphi 7 与数据库

二、连接 Access 数据库

Page 79: 第六章  Delphi 7 与数据库

三、 ADO 常用组件1. TADOConnection 组件TADOConnection 组件用来建立与 ADO数据库之间的联系,各种 ADO 数据集及操作组件可以共用这种联系来执行命令,读取数据,并执行相应的操作。 T

ADOConnection 组件允许通过改变其属性值来控制与数据库之间联系的属性和情况。

Page 80: 第六章  Delphi 7 与数据库

( 1 ) TADOConnection 组件的重要属性ConnectionString 属性Connected 属性LoginPrompt 属性ConnectionTimeout 属性( 2 ) TADOConnection 组件的重要方法 Cancel 方法 Open 方法

Page 81: 第六章  Delphi 7 与数据库

2. TADODataSet 组件TADODataSet 组件可以直接与一个表进行连接,也可以执行 SQL 语句,还可以执行存储过程,可以说它集 TADOTa

ble 、 TADOQuery 、 TADOStoredProc 三者的功能于一身。使用时首先设定TADODataSet 的 Connection 属性为 TADOConnection 组件。如果没有 TADOConnection 组件,就直接设定 ConnectionString 属性。

Page 82: 第六章  Delphi 7 与数据库

( 1 ) TADODataSet 组件的重要属性 ConnectionString 属性 CommandType 属性和 CommandText 属性 Connection 属性 ( 2 ) TADO DataSet 组件的方法 TADO DataSet 组件的方法大多从 TDat

aSet处继承而来,如用来移动数据指针的 First 、 Next 、 Last 和 Prior 方法,及用来编辑数据记录的 Insert 和 Edit 方法等。

Page 83: 第六章  Delphi 7 与数据库

3. TADOTable 组件TADOTable 组件与 BDE 中的 Table 组件非常类似,许多属性、事件和方法也一样。如果使用了 TADOConnection 组件,那么 TADOTable 组件的 Connection 属性可直接设置为指向 TADOConnection组件,否则 TADOTable 组件的 Connec

tionString 属性就需要详细设置。

Page 84: 第六章  Delphi 7 与数据库

4. TADOQuery 组件TADOQuery 组 件 的 ConnectionString 属性和 Connection 属性的设置与上面的 T

ADOTable 组 件 相 同 。 TADOQuery 组件的功能和作用与 BDE 中的 TQuery 组件类似。但有一点不同,即在程序中为参数赋值时, TQuery 组件的赋值语句为:ParamByName('FieldName').Value:=s1;而 TADOQuery 组件的赋值语句为:Parameters.ParamByName('FieldName').V

alue:=s1;

Page 85: 第六章  Delphi 7 与数据库