Categories

Links

delphi 强类型数据集

在delphi中,访问TDataSet的子类字段通常用FindByName,其实可以用类似ado.net 强类型数据集的方法来完成,简单的例子


unit Unit10;

interface
uses ADODB,classes,DB,variants,dialogs;

type
TPermission=class(TADODataSet)
  constructor create(owner:TComponent);override;
  public
  security_key_id:TIntegerField;
  id:TIntegerField;
  group_id:TIntegerField;
  access_level:TIntegerField;


end;

procedure test;
implementation
constructor TPermission.create(owner: TComponent);
begin
  inherited Create(owner);
  //创建字段
  self.CommandType:=cmdTable;
  CommandText:='permissions';


  security_key_id:=TIntegerField.Create(self);
  security_key_id.FieldName:='security_key_id';
  id:=TIntegerField.Create(self);
  id.fieldName:='id' ;

  group_id:=TIntegerField.Create(self);
  group_id.fieldName:='group_id';
  access_level:=TIntegerField.create(self);
  access_level.fieldName:='access_level';


//设置dataset,同时会将字段加入到fields集合
  security_key_id.DataSet:=self;
  id.DataSet:=self;
  group_id.DataSet:=self;
  access_level.dataset:=self;


end;

procedure test;
var
  p:TPermission;

begin
  p:=TPermission.Create(nil);
  p.ConnectionString:='.................................................';
  p.Active:=true;
  while not p.eof do begin

    showmessage(vartostr(p.security_key_id.Value));
    p.Next;
  end;
end;
end.


 


 


其实,如果delphi的index 属性支持字符串的话,可以定义出更高效的类,yy的


TPermission=class(TADODataSet)
 published
 property security_key_id:TField index 'security_key_id' read fieldByname;
 property group_id:TField index 'group_id' read fieldbyname;
 property id:TField:TField index 'id' read fieldbyname
 property access_level:TField index 'id' read fieldbyname


end;


 


 

[2008-06-25 02:39:30.385256 | jiangjianxiao]

comments


Powered by Google App Engine