要想删除表中的某一条记录 首先将记录指针移到该记录处 然后调用delete方法 这样 当前指针所在的记录就会被删除 而且我们在进行删除 *** 作时 不必将TTable部件设置成编辑状态 当前指针所在的记录被删除之后 被删除记录下面的所有记录都向前移动 记录指针自动移到紧挨着被删除的记录的下一条记录 在删除记录的过程中没有提醒用户是否真的想删除当前记录的信息确认框 因此在进行此项 *** 作时要倍加小心 如果是开发应用程序 最好的办法是提供一个确认信息框确保用户不会意外删除记录
插入一条记录也很简单 Delphi为用户提供两种方法用来插入记录到现存数据库表中 一种方法是在当前记录指针所在的记录处插入记录 另一种方法是在数据库表的尾部插入记录 这两种方法是分别调用Insert方法和Append方法实现的 但是无论是调用Insert方法还是调用Append方法在具有索引的数据库表中插入记录 增加到索引表中的记录都将按照索引顺序写入到数据库表中 也就是说对于索引表 调用Insert和Append方法的效果是一样的 事实上 Append方法只适用于那些没有索引的表 这种没有索引的表并不十分有用因而通常不创建这种表 几乎任何情况下我们都是用Insert方法来插入记录
用户在插入记录时一般可以采用两种方式插入 逐步插入即首先建立一条空记录 然后再填充记录的各个字段 最后再将记录写回到磁盘 共分三个独立的 *** 作步骤 而使用InsertRecord方法便可以一次将插入记录的 *** 作完成
逐步插入方法
逐步插入方法分为三个明确的步骤 先调用TTable部件的Insert方法在TTable中创建一条新的空记录 然后填充该记录的各个字段 最后调用post方法把新记录写到磁盘上的实际数据库文件中 在填充并传送记录以前 考虑插入记录到表中的什么位置是毫无意义的 假设插入的表是有索引的 在调用post方法时 Delphi会自动地把插入的新记录按照索引顺序插入到表中的正确位置 如果插入的表中没有索引 那么新记录将插入到当前指针所在记录的后面
因此 采用逐步插入方法插入记录的程序代码一般如下形式
With Table do
begin
Insert{插入一条空白记录}
<填充该记录的各个字段>
post{将插入的记录写回到磁盘文件}
end
对于没有索引的数据库表 可以用Append方法替代Insert方法把新记录插入到表的尾部
调用InsertRecord插入记录
对于简单的应用程序 Delphi允许用户用一条语句插入一个新记录 而且这个新记录可以带有任意多个新字段值 InsertRecord方法把新记录中字段的赋值语句和psot方法调用组合进一条语句中
InsertRecord方法把记录的各个字段值组合成一个字段值数组作为它的唯一参数 在字段值数组中 可以为插入的记录的每个字段提供一个字段值 或从最左一列开始依次为任意多个字段赋值 也就是说用户可以从表的最左边一列起 把多个列的值同时传递给InsertRecord 直到所有字段都被赋值 用户也可以省略后面的字段 InsertRecord会用空值填充这些没有赋值的字段 用户还可以对那些明确希望用空值填充的字段传递保留字NIL来标明该字段为空
如我们希望在Customer DB表中插入一条记录 可以用下面的代码来实现
InsertRecord([ NIL NIL NIL])
在上面的程序代码中 我们只填充了四个字段 CustNo Company Add Add InsertRecord会自动将其它字段赋以空值
例 在这个例子中 我们在CustNo DB表中插入和删除记录 都是在程序中完成这类 *** 作的 而不再是使用DBD或数据浏览部件完成
插入/删除记录
unit tt
interface
uses
SysUtils Windows Messages Classes Graphics Controls
StdCtrls Forms DBCtrls DB DBGrids Buttons DBTables Grids
ExtCtrls Mask Dialogs
type
TForm = class(TForm)
DBGrid : TDBGrid
DBNavigator: TDBNavigator
Panel : TPanel
DataSource : TDataSource
Panel : TPanel
customerTable: TTable
BitBtn : TBitBtn
Label : TLabel
Label : TLabel
BitBtn : TBitBtn
BitBtn : TBitBtn
CustNoEdit: TEdit
CompEdit: TEdit
procedure FormCreate(Sender: TObject)
procedure BitBtn Click(Sender: TObject)
procedure BitBtn Click(Sender: TObject)
procedure FormActivate(Sender: TObject)
private
{ private declarations }
public
{ public declarations }
end
var
Form : TForm
implementation
{$R * DFM}
procedure TForm FormCreate(Sender: TObject)
begin
customerTable Open
end
procedure TForm BitBtn Click(Sender: TObject)
begin
If (Length(CustNoEdit text)= )and
(Length(CompEdit text)= )
then
MessageDlg( 没有输入新记录的字段值! mtError [mbCancel] )
else
with customerTable do
begin
IndexFieldNames:= CustNo
If FindKey([CustNoEdit text]) then
MessageDlg( 已经存在这条记录! mtError [mbCancel] )
else
InsertRecord([StrToInt(CustNoEdit text) CompEdit text nil])
CustNoEdit text:=
CompEdit text:=
end
end
procedure TForm BitBtn Click(Sender: TObject)
begin
If (Length(CustNoEdit text)= )and
(Length(CompEdit text)= )
then
MessageDlg( 没有输入删除的记录的字段值! mtError [mbCancel] )
else
with customerTable do
begin
IndexFieldNames:= CustNo
If FindKey([CustNoEdit text]) then
begin
If MessageDlg( 你确定要删除这条记录吗? mtConfirmation
[mbYes mbno] )=mrYes then Delete
end
else
MessageDlg( 没有你要删除的记录! mtError [mbCancel] )
CustNoEdit text:=
CompEdit text:=
end
end
procedure TForm FormActivate(Sender: TObject)
begin
CustNoEdit setfocus
end
end
输入数据的有效性验证
当用户向一个数据库表中插入新记录或修改原有记录时 我们必须确保用户输入的数据是有效的 为此Delphi通过三种不同的途径用来验证用户输入的数据是否有效
这三种途径是 基于数据库表的有效性验证 基于字段的有效性验证 基于记录的有效性验证
lishixinzhi/Article/program/Delphi/201311/25165
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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)