当前位置:编程学习 > Delphi >>

Delphi数据库编程新手指南(04)

数据访问所需组件
      目前为止,本教程提供了如何连接到Access数据库,以及显示数据库表中图形数据的方法。上一章,我们讨论了一些“高级”的数据库编程技巧(译者加:相对于初学者而言)——现在让我们回到更适合“初学者”水平的课题。

      这次,你将学会如何建立一个可用于浏览数据库表中记录的窗体。

      前几章例子涉及到的数据感知组件(ADOTable、DBGrid...),都未深入到各个组件的细节——它们为了实现什么功能而设计、又如何联系在一起的?

      一起工作
      在开发基于ADO的Delphi数据库应用程序时,位于组件面板Data Controls、ADO以及DataAccess页上的组件,使我们的程序能够从数据库中读取和写入信息。

      每个数据感知(data-aware)窗体,通常都包含:

几个数据感知控件(Data Controls页)用于创建可视化用户界面(数据的窗体外观)。

至少一个DataSource组件(Data Access页)作为窗体上数据集组件和数据感知控件之间的接口。

一个或多个数据集组件(ADO页),提供对数据库表或查询结果中数据的访问。

一个连接组件(ADO页),将所有的数据集组件指向到特定的数据库。

      数据控制(Data Controls)
      Delphi的数据感知控件通常位于Standard页,但也有一些被改良用于显示和操作数据集(表或查询)内容的组件。控件的选择取决于我们想要如何呈现信息,以及希望用户如何浏览(操作——增加或编辑)数据集记录。例如,DBEdit和DBMemo用来显示数据集的单个记录。而DBGrid,通常用于显示整个数据集的内容。既然所有的数据感知控件都是标准Windows控件的“副本”——带有许多额外属性,那么建立一个具有一定功能的数据库应用程序也应是一个比较熟悉的任务(译者加:与通常的Windows任务相比较)。所有的数据感知组件共享一个共同的属性:Data Source(数据源)。

      数据源(Data Source)
      简而言之,DataSource(数据源)组件提供一种机制,把数据集组件和显示数据的数据可视化组件相连。通常,你需要一个DataSource组件,用于每个数据集组件与一个或多个数据可视控件的连接。

      数据集(Datasets)
      为了创建一个基于ADO的应用程序,Delphi提供了四个数据集组件:TAdoDataSet、TAdoTable、TAdoQuery和TAdoStoredProc。所有组件用于检索、显示和修改数据。所有这些组件都可通过它的ConnectionString(连接字符串)属性直接连接到ADO数据库(如Access),或一起共享一个连接。当通过TAdoConnection组件连接时,该连接将指定一个ADO连接对象连接到ADO数据库。

      ADO连接(ADOConnection)
      ADOConnection组件用于建立与ADO数据库的连接。尽管每个ADO数据集组件可直接连接到数据库,但通常我们需要使用ADOConnection组件,因其提供了用于激活连接、直接访问ADO数据库和处理事务的方法和属性。为了连接到一个特定的数据库,我们使用ConnectionString属性。

      现在,我们知道了相关的理论,是行动的时候了!下一步将建立一个数据窗体。在开始前,用Access打开数据库并在数据库中增加一些“虚拟”数据,用于以后的数据操作。

定义用户界面(Defining the User Interface)
      我们分三步来构建自己的数据浏览窗体。第一步,定义用户界面;第二步,添加并配置数据访问组件;最后,添加数据感知控件。

    开始前关闭所有打开的工程,然后进行以下步骤:

1.选择File | New Application。这将创建一个新的工程,包含一个空白窗体、一个单元及一个工程文件;

2.在空白窗体上添加一个PageControl组件(位于组件面板的Win32页)。使用缺省名:PageControl。

3.在PageControl上添加两个TabSheets(在PageControl上单击右键并选择"New Page")。将TablSheet1的标题(Caption属性)设为“Browse(浏览)”,另一设为“Edit(编辑)”。

1.在表窗体上放置一个DataSource(DataAccess页)、一个ADOTable和一个ADOConnection(ADO页)。全部使用缺省名称。

2.在PageControl组件的第一页(Browse标签)放置一个DBGrid(DataControls页)组件。

3.放置一个DBNavigator组件(Data Controls页)。导航按钮用于遍历记录集中的记录。

使用ObjectInspector设置组件间的链接:

          DBNavigator1.DataSource = DataSource1
          DBGrid1.DataSource =DataSource1
          DataSource1.DataSet =ADOTable1
          ADOTable1.Connection =ADOConnection1
         ADOConnection1.ConnectionString = ...
         ADOConnection1.LoginPrompt = False
          ADOTable1.TableName ='Applications'

      注:如第二章中所讨论的一样,ConnectionString属性指出数据存储的物理位置和我们的访问方式。你可以使用与第二章同样的连接字符串,或者通过调用连接字符串编辑器自己建立一个。

      设置ADOConnection组件的LoginPrompt属性为False,阻止数据库登录界面出现。既然我们没有为数据库设置任何密码,因此也不需要登录提示。

 

 \
 

      字段(Fields)
      当我们想为用户提供整个记录集(表中的数据)的时候,可以使用DBGrid组件。尽管DBGrid能让我们的用户在表中添加、编辑和删除记录——但更好的方法是为表中的每个字段使用Field(字段)对象。字段对象主要用于控制应用程序中数据的显示和编辑。通过使用FieldsEditor(字段编辑器),我们可以为表中的每一列设置固定的字段对象列表。双击DataSet组件(ADOTable1)调用字段编辑器。为了将字段添加到数据集的持久性字段列表,右击列表并选择Add Fields。

      若不是为用户显示表中的所有数据(在DBGrid中),可使用field-oriented(面向字段)的数据感知组件,如编辑框。例如DBEdit组件,是一个TEdit类的数据感知版本。

      在窗体中放置DBEdit并将其与表的字段相连,最简单的方法如下:

1.双击ADOTable1组件调用Fields editor(字段编辑器);

2.选择Name字段,如例。让Page Control的第二个标签成为被选项;

3.在窗体上拖动Name字段(准确地说:TabSheet1)。

 

 \
 

      当你在选项卡上放下Name字段时,Delphi会自动放置一个Label和DBEdit组件。Label组件的Caption(标题)与被拖动字段的DisplayLabel(显示标签)属性是相同的。DBEdit通过DataSource属性连接到数据集的数据源。如果你从字段编辑器中选择多个字段并把它放置在窗体上,Delphi将在窗体上放置同样多的Label/DBEdit组件。若是表中的一个“是/否”列,允许true/false值,Delphi会添加TDBCheckBox。

 \
 

 

      OK,我们现在要做的是激活连接并滚动记录。一个数据集(ADOTable1)组件的Active属性表示,我们是否有一个实时连接到表。设置Active为True或调用Open方法使ADOConnection组件的Connected属性为True——并在相关的数据感知控件中显示数据。

      首先、接着、最后......(First, Move by, Last...)
      现在我们作最后的准备。我们下一步将了解怎样浏览记录集。

      DBNavigator组件为浏览记录集提供了一个简单、友好的工具。除了浏览功能外,它还提供了操作数据的方法,如:插入、删除或取消更改。例如,我们单击了Delete(删除)按钮,则相应的记录将会从记录集中删除。每个按钮都是可选的,你可以随意的组合它们。

     使用按钮,可以直接跳到最后一条记录或移动到上一个。例如,点击Last按钮从当前记录移到记录集的最后一条,并禁用Last和Next按钮。点击Last按钮与调用数据集的Last方法具有相同的功效。

      需要注意的是,DBNavigator不能按一定的数量间隔进行跳跃式浏览。数据集的MoveBy方法可定位记录集中任一活动记录的位置。

       这

补充:软件开发 , Delphi ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,