Delphi中嵌入的数据库应用开发工具如Database Form Expert具有很强大的功能 我们不需要编写任何程序代码便可以快速地创建一个简单的数据库应用程序 甚至还能创建基于多个数据库表的主要──明细型数据库应用程序
本章主要介绍用Delphi开发简单的数据库应用程序的一般方法和步骤 首先让读者对Delphi强劲的数据库应用开发工具有一个直观的印象 然后在此基础上进行复杂的数据库应用程序的设计 本章主要包括以下内容
● 创建数据库应用窗体
包括用Database Form Expert 或手工方式创建简单的无需编写程序代码的应用程序或者利用多个部件并编写功能复杂的程序代码创建主要──明细型数据库应用程序
● 在应用程序中控制字段有关的属性
描述怎样读写数据库表中字段的值和控制字段的显示格式等
本章所介绍的例子中用到的窗体 数据库表以及相关的文件都是在安装Delphi时缺省安装在C:\DELPHI\DEMOS\DB\MASTAPP目录中 并且用别名DBDEMOS表示这一子目录 在本章例子中 除特殊声明外 所有的TTable和 TQuery 部件的 DatabaseName 属性都设置为DBDEMOS
简单的基于单表的据库应用
用Decphi创建显示一个数据库表中的内容的应用非常简单和方便 只需要三个部件 只要将这三个部件通过相关的属性相互联系起来 不需要编写任何程序代码便可以实现 例如 用户想查看数据库表Customer DB中的内容时 可以按下面步骤来实现
选择相关的部件
选择菜单Project/New开始一个新工程 并修改Form 的Caption属性为CustomerFrom 并把Name属性设置为CustomerForm 然后从部件选择板上的Data Access 页上选取一个Datasounce部件和一个Table部件放到窗体的左上角 它们是非可见的部件 在窗体中我们看到的只是部件的图标 从Data Control页上选取DBGrid部件放到窗体中前两个部件的下面 完成这些工作之后 窗体如图 所示
图在CustomerFrom 窗体中放置三个部件
设置部件的属性
为了使TDBGrid部件能够显示数据库表Customer DB中的客户信息 我们必须修改窗体三个部件相关的属性 这些属性的设置如表 所示
表 CustomerFrom 窗体中三个部件的属性设置
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
属 性 属 性 值
──────────────────────────────
DataSource AutoEdit False
DataSource DataSet Table
Table DatabaseName DBDEMOS
Table TableName CUSTOMER DB
Table Active True
DBGrid DataSource DataSource
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
这里要注意的是 DBDEMOS是Delphi缺省安装时C:\Delphi\DEMO\DB\MASTAPP目录的别名 而且数据库表Customer DB存在该目录下 用户在使用这一例子时 请注意这两项设置都是正确的 另外 Datasource Dataset Table TableName和DBGrid Datasource属性都有下拉式列表框允许用户从可能的值列表中选择它们的值 这样能方便我们进行属性的设置 而且不容易出错
Datasouuce AutoEdit属性设置为False是为了防止用户修改数据库表中的数据 在下面的讨论中我们将详细地进行说明
Table Active设置为True时 Delphi会打开Table TableName所指定的数据库表 如果这个数据库表不存在(或表中什么也没有 即空表) Delphi 会d出出错信息并且Table Active变成False 当Table Active被设置成True之后 Table 部件的一些属性就不能再修改了 如Table DatabaseName和Table Tablename属性 若要修改它们 必须首先要将Table Active属性设置为False 然后再进行修改 否则 Delphi会d出错误信息 Cannot perform this operation on an open database 当看到这个错误信息时 只需把Table Active置成False 完成相关的修改后 再把 Table Active 属性设置为True
当我们把DBGrid DataSource的值设置成DataSource 时 Delphi会把Customer DB中的数据填充到DBGrid 部件中 并且可以用DBGrid 中的滚动条来浏览数据库表中的所有记录
运行程序
保存文件 命名代码单元为Cust pas 命名工程名为CustPRJ DPR 然后按F 编译并运行程序 程序执行之后 我们可以使用滚动条或键盘移动键在字段和记录间移动 但不能修改表中的数据 因为Datasouc AutoEdit 属性已被设置为False
Cust程序中的三个部件都有各自的特殊用途 三个部件的相关属性在内部相互联系生成最终的应用程序 TTable部件连接磁盘上的实际数据库表和应用程序中其他部件的通道 TTable部件具有打开和关闭 读取 更新以及其他处理磁盘数据库文件的方法
TDatasource部件是连接TTable部件和数据浏览部件如TDBGrid部件的桥梁 TDBGrid部件用于显示数据库表中的数据信息 它为应用程序提供一个直观的界面 图 阐述了这三个部件之间的关系
Cust程序中三个部件之间的内部关系
TDBGrid 部件的奇妙之处在于它知道如何去获取数据库表中的下一条或前一条记录 我们使用滚动条或箭头键便可以完成这项任务 TDBGrid部件不知道如何增加 删除和修改记录 如果想让 Cust 程序能够修改数据库表中的记录 只要把 Datasource 部件的AutoEdit属性设置成True 并重新编译和运行程序就可以达到目的 使用箭头键 把DBGrid的高亮度条定位到某一个字段上 然后键入新值 该字段中的值将被键入的新值所取代 并且当移动到另一条记录时 健入的信息会自动写入数据库表中 如果想放弃所做的改动 只需在离开该字段前按一下Escape键
如果想在表中增加新记录 可以把高亮度条移到网格底端的空白记录上并输入新记录的有关字段值 也可以在用户指定的某一条记录的后面插入一条新记录 只要把高亮度条定位到指定的记录上 按Ins键 使可以在该记录的后面插入新记录
删除某一条记录时 把高亮度条定位在想删除的记录的任何字段上 按Ctrl+ del键 这时会出现保护信息 我们可以确认是否真的想删除该项记录
TDBGrid为用户提供了较完备的功能 用于控制是否编辑 增加或删除记录 若想禁止对数据库表作任何修改 设置TDBGrid部件的Readonly属性为 True 并设置 Option dgEDiting为False(这将为我们提供一个只读的数据库表浏览器而不是数据库编辑器 但它隐含着增加 编辑和删除记录的能力) TDBGrid部件的这些属性和Option属性其它选项的各种不同组合可以让我们很方便地对数据库表进行有效的浏览 编辑等 *** 作
如果我们经常使用像电子表格那样的界面来显示和编辑数据记录 TDBGrid 部件便是一个很方便的工具 但那并不是最友好的用户界面 如果想拥有更优美更直观的界面 我们还可以使用单独的数据浏览部件来显示数据库表中各个字段的值 并利用TDBNavigator部件控制对数据库表的存取
lishixinzhi/Article/program/Delphi/201311/25173
Visual Query Builder 以可视化的方式建立SQL语句对数据库表和表中的记录进行 *** 作
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
SQL links使得Delphi数据库应用程序利用SQL语言访问驻留在远程服务器上的数据 这些服务器包括ORACLE Sybase Microsoft SQL Server Informix InterBase 当安装SQL Link驱动程序之后 SQL语句便可以直接 *** 作服务器上的数据
Delphi可以访问的数据源(DataSource)
Delphi数据库应用程序是通过BDE获取它们所需的数据的 BDE与不同类型的数据源打交道 BDE可以使用的数据源有如表 所示
表 Delphi可访问的数据源
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
数据源(DataSource) 特 性 描 述 文件扩展名
─────────────────────────────────────
dBASE数据库 数据库表是通过dBASE数据库管理系统或DBD建立的 每个表是一个独立的文件 DBF
─────────────────────────────────────
Paradox数据库 数据库表是通过Paradox数据库管理系统 DB或DBD建立的 每个表是一个独立的文件
─────────────────────────────────────
ASCII文件 表是通过Database Desktop建立的 每个 TXT表是一个独立的文件
─────────────────────────────────────
本地InterBase服务器 数据库是通过InterBase数据库管理系统 GDB建立的 多个表包含在一个数据库文件中
─────────────────────────────────────
SQL数据库服务器 数据库是通过相应的数据库服务器提供的 依赖不同的ORACLE Sybase Informix 专用或通用工具建立的 也可以通过DBD来 数据库管理Microsoft SQL Server 创建数据库 并通过SQL Link访问数据库 系统InterBase
─────────────────────────────────────
ODBC数据源 主要是指那些具有ODBC接口的数据库系统 依赖于相应如MS Access Btrieve等的数据库
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Delphi数据库的体系结构
Delphi使用可视化的部件创建数据库应用 跟创建其它的非数据库应用程序一样 数据库部件都具备一定的属性 程序设计人员可以在设计过程中设置部件的多种属性 也可以在程序运行过程中通过程序来设置部件的各种属性
在Delphi部件板上有两页数据库部件用于开发数据库应用程序
数据访问部件页 该页上的部件主要用于说明有关的数据库的信息 如应用程序要访问(连接)的数据库 要访问数据库中的具体的数据库表 以及要访问表中哪些字段等 在实际的开发应用中常用的部件有TDataSource TTable TQuery等
数据控制部件页 该页上的部件主要用于显示浏览数据库中的数据信息 为用户提供了一个可视化的界面 常用的部件有 TDBGrid TDBEdit TDBCheck等 可以让用户对数据库中的信息进行有效的浏览 编辑 插入 删除等 *** 作
TTable TQuery TStoredproc部件负责与实际的数据库表联系 并从中获取数据信息 因而它们又常常被称为数据集部件 它们在程序设计过程中是可见的 但在程序运行时是不可见的 它们通过 BDE 为应用程序提供与数据库的连接 数据控制部件通过TDataSource部件与数据集部件相连 为用户提供一个可视化的界面 并在其中显示数据库中的数据信息
数据访问部件
数据访问部件页上提供了一组数据访问部件用来访问数据库中的数据
当要创建一个数据库应用时 首先在窗体中选择一个数据访问部件 然后为数据访问部件设置有关的属性 说明要访问的数据库 数据表以及表中的记录等 数据访问部件为数据控制部件与数据源建立一条通道 数据访问部件在程序运行时是不可见的 下表列出了数据访问页上的数据访问部件以及它们的主要用途
表 数据访问部件
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
部件名称 主 要 用 途
────────────────────────────
作为数据集部件TTable TQuery StoredProc组TDataSource 件与数据浏览件TDBGrid TDBEdit之间传送数据的通道
────────────────────────────
TTable 它是存取磁盘上数据库表的媒介 它通过BDE存取数据库表中的数据 TTable再与TDataSource进行 对话 使得数据浏览部件能够有效地从TTable中访问数据并能显示和编辑其中的数据
────────────────────────────
TQuery 它利用SQL语言访问磁盘上数据库表中的数据 并与TDataSource 对话 实现数据浏览部件对数据库的访问
────────────────────────────
TStoredProc 在应用程序中 它主要用来访问远程服务器中的存贮过程
────────────────────────────
TDatabase 当应用程序要登录到一个远程服务器上的数据库时 可以用该部件来建立应用程序与数据库永久
性的连接
────────────────────────────
TBatchMove 用于复制数据库表的结构或表中的记录
────────────────────────────
TReport 用于创建数据库的输出报表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
lishixinzhi/Article/program/Delphi/201311/25180/*
创建数据库
*/CREATE
DATABASE
CommunityON
(
NAME
=
Community_dat,
--
数据名称
FILENAME
=
'e:\MSSQL7\data\Communitydat.mdf',--
文件名与路径
SIZE
=
10MB,
--
数据大小
MAXSIZE
=
50MB,
--
最大空间
FILEGROWTH
=
5MB
)
--
数据每次扩容的空间LOG
ON(
NAME
=
Community_log,
--
日志名称
FILENAME
=
'e:\MSSQL7\Communitylog.ldf',--
文件名与路径
SIZE
=
5MB,
--
日志空间
MAXSIZE
=
25MB,
--
最大空间
FILEGROWTH
=
5MB
)
--
数据每次扩容的空间GO
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)