Delphi中ClientDataSet的用法小结
????? TClientDataSet控件继承自TDataSet,其数据存储文件格式扩展名为 .cds,是基于文件型数据存储和操作的控件。该控件封装了对数据进行操作处理的接口和功能,而本身并不依赖上述几种数据库驱动程序,基本上能满足单机"瘦"数据库应用程序的需要。
???? 一、TClientDataSet的基本属性和方法介绍
??? 1、FieldDefs: 字段定义列表属性
???? 开发者可通过单击属性编辑器中该属性编辑按钮,或在该控件上单击右键选择弹出菜单中的"Fields Editor"菜单进行字段编辑。设置完此属性后,实际上就相当于定义了表的结构;如果想装入已有的数据表的结构和数据,可通过单击右键选择弹出菜单中的"Assign Local Data"菜单,从弹出对话框中选取当前窗体中已与数据库连接好的数据集控件名称即可(当前窗体中必须已放置好要套用的数据集控件并打开激活)。
使用注意:
对于自定义的字段名表,该属性编辑完后,该控件仍然无法打开。必须右键单击该控件,选择弹出菜单中的"Create DataSet"菜单,让该控件以上述编辑的字段列表为依据,创建数据集后,才能够被激活打开和使用。否则,会出现类似"ClientDataSet1: Missing data provider or data packet."的错误(包括在运行期,运行期可调用该控件的CreateDataSet方法,从而动态定义字段和表)。
????? 2、FileName属性
????? 说明:数据存储文件的名称。因该控件是基于文件型的数据操作控件,因此,必须指定所操作的数据文件名称(默认扩展名称.cds),从而打开和激活该控件,进而进行数据编辑。
????? 例1:利用此属性打开指定的.cds文件
var pp:integer;begin pp:=ClientDataSet1.SavePoint; ClientDataSet1.Edit; ClientDataSet1.FieldByName('姓名').asstring:='古话'; ClientDataSet1.Post; table1.Refresh;end;??? 恢复点?:?ClientDataSet1.SavePoint:=pp;
??? (2)Cancel,RevertRecord
???? 取消对当前记录的修改,只适合没有post的,如果post,调用?RevertRecord 。
????(3)CancelUpdate
???? 取消对数据库所有的修改
????(4)UndoLastChange(boolean),changecount
????? 取消上一次的修改,可以实现连续撤消。参数为true:光标到恢复处;false:光标在当前位置不动。changecount返回修改记录的次数,一个记录修改多次,返回只一次,但UndoLastChange只撤消一次。
??? 10、可写的recno
???? 对于Ttable和Tquery的recno是只读的,而TClientDataSet的recno可读可写ClientDataSet1.recno:=5;是设第五个记录为当前记录。
?????11、数据保存
???? 对于table使用post可更新数据,而ClientDataSet1的post只更新内存数据,要更新服务器数据要使ApplyUpdates(MaxErrors: Integer),他有一个参数,是允许发出错误的次数,-1表示无数次,使用simpleobjectbroker时常设为0,实现自动容错和负载平衡。
?????