1.4.2 使用TSimpleDataSet控件
在前一节中讨论了使用TSQLDataSet加上TDataSetProvider和TClientDataSet控件开发应用程序的方式。由于在使用dbExpress开发数据库应用程序时一定需要使用这些控件的组合,因此,Delphi 2006的DataSnap控件集便提供了一个新的控件TSimpleDataSet来帮助开发人员简化使用dbExpress开发数据库应用程序的步骤。
简单地说,TSimpleDataSet控件就等于TSQLDataSet加TDataSetProvider和TClientDataSet控件,因此,开发人员只须使用一个TSimpleDataSet控件便可以开发变更数据的应用程序。下面来介绍如何使用TSimpleDataSet控件。
首先点击Delphi的File|New|VCL Forms Application-Delphi For Win32菜单建立一个新的Delphi应用程序,然后如同1.2节说明的方式连接InterBase数据库。在主窗体中放入位于dbExpress页签的TSimpleDataSet控件,请读者注意图1-25显示了TSimpleDataSet已经在内部自动建立了TSQLConnection和TDataSet控件,并且命名为InternalConnection和InternalDataSet,此时开发人员就可以直接使用TSimpleDataSet的InternalConnection和InternalDataSet控件连接和处理数据,而无须再额外使用TSQLConnection和TSQLDataSet了。
图1-25 TSimpleDataSet控件会自动在内部建立TSQLConnection和DataSet控件
现在我们可以直接在对象查看器中展开TSimpleDataSet的InternalConnection和InternalDataSet的属性值并且设定连接到CHINESEDEMO数据库,再设定TSimpleDataSet的DataSet\CommandText属性值从BIOLIFE数据表中取得数据,如图1-26所示,最后再设定TSimpleDataSet的Active属性值为true,以便从数据源中取得数据。
图1-26 使用对象查看器直接设定TSimpleDataSet的InternalConnection和InternalDataSet的属性值
接着在主窗体中放入TDataSource控件,设定它的DataSet属性值为刚才加入的TSimpleDataSet控件、放入TDBNavigator控件,设定它的DataSource属性值为刚才加入的TDataSource。然后双击TSimpleDataSet控件启动它的字段编辑器,加入所有的字段对象,再拖曳这些字段对象到主窗体中以建立数据感知控件。
最后于主窗体中加入一个TButton,设定它的Caption属性值为ApplyUpdate,并且在它的OnClick事件处理函数中调用TSimpleDataSet控件的ApplyUpdates方法,并把变更的数据更新回数据源中。
procedure TForm1.Button1Click(Sender: TObject);
begin
SimpleDataSet1.ApplyUpdates(0);
end;
此时范例应用程序看起来类似图1-27所示。
图1-27 执行TSimpleDataSet的范例程序
现在读者就可以执行TSimpleDataSet的范例应用程序了,图1-28便是这个新的范例应用程序执行的画面。这个新的范例应用程序和1.3.1节开发的范例应用程序在功能上是一模一样的,只是使用的控件不一样,使用TSimpleDataSet比使用TSQLDataSet加TDataSetProvider和TClientDataSet控件方便得多。在开发一般应用程序的时候,直接使用TSimpleDataSet是比较方便的。
图1-28 使用TSimpleDataSet范例应用程序执行的画面
也许读者会问,既然Delphi 2006提供了TSimpleDataSet控件可以更方便地开发数据库应用程序,那么还会使用TSQLDataSet加TDataSetProvider和TClientDataSet控件这种比较麻烦的方式吗?答案是肯定的,在后面讨论执行效率的章节中读者便会了解在要求高执行效率的应用中,TSQLDataSet加TDataSetProvider和TClientDataSet控件还是非常有用的。
TSimpleDataSet是从Delphi 7才加入的新控件,在Delphi 6和Kylix 2/3之中的dbExpress则是使用TSQLClientDataSet。Delphi 7之所以使用TSimpleDataSet代替TSQLClientDataSet的原因是除了TSimpleDataSet更容易使用之外,TSimpleDataSet的执行效率也比TSQLClientDataSet好许多,比较适合用来开发简易或两层的数据库应用系统,有关TSQLClientDataSet效率的问题会在稍后的章节中说明。但是如果读者已经在Delphi 6中使用TSQLClientDataSet控件或是需要开发跨平台的dbExpress应用系统,那么仍然可以使用TSQLClientDataSet。在Delphi 2006中TSQLClientDataSet放在Delphi 2006安装目录下的BDS\4.0\Demos\DelphiWin32\ VCLWin32\Db\SQLClientDataset子目录之中,读者可以自行安装TSQLClientDataSet到Delphi 2006之中再使用。











