我就是这样设计的,所有的表都是一个类,不过,我的类是自动生成的,根据表结构自动生成类及相应的SQL,你可先写一个生成类的程序(不然100个类是要写晕了)
我的生成类的程序是用awk写的,我的开发过程为,先定义一表结构(文本形式),然后根据表结构生成相应的建表SQL,并生成相应的类,每个类基本结构大至如下:
//工作简历库
TGZJLK=object
GZJLBM:integer;
GRBM:integer;
DWMC:string[60];
QSRQ:string[10];
ZZRQ:string[10];
GZBM:string[20];
JCLB:string[4];
UpdateStat:boolean;
Function InsertIt:Boolean;
Function GetDataFromDataSet(const asql:TDataSet;const tran:boolean=true):Boolean;
Function SetDataToDataSet(const asql:TDataSet):Boolean;
Function saveIt(const st:TDataSet):Boolean;
Function UpdateIt(st:TDataSet):boolean;
end;
而函数的实现为:
Function TGZJLK.InsertIt:Boolean;
Begin
Result:=False;
try
CurDatabase.StartTransAction();
With CurDatabase.IBSql do
begin
Sql.Text:='Insert into GZJLK ( GZJLBM,GRBM,DWMC,QSRQ,ZZRQ,GZBM,JCLB) '
+Format('values ( ''%d'',%d,''%s'',''%s'',''%s'',''%s'',''%s'')'
,[GZJLBM,GRBM,DWMC,QSRQ,ZZRQ,GZBM,JCLB]);
ExecSql();
CurDatabase.Commit();
end;
ReSult:=True;
except
on E: Exception do
begin
CurDatabase.RollBack();
TUtils.ShowMess(e.Message);
end;
end;
end;
//其它函数略
上面的代码都是由以下文本生成,不需自己写任何代码
---------------------------------------------------
工作简历库
--------------------------------------------------
工作简历编码(内部码) I R K A
个人编码 I R
单位名称 C 60
起始日期 C 10
终止日期 C 10
工作部门 C 20
奖惩类别 C 4
---------------------------------------------------------
我们甚至可以由以上结构生成一个简单的输入界面