有这么一个系统,在设计时,每个表为一个类,系统有100多个表,就是100多个类,每个类为一个单元,每个字段就是类的属性,所有的SQL都写在类中,再把返回值给Form中的控件中。(涉及复杂的SQL,就麻烦大啦),一个城市的小表,我就写了两天,要是用dbgrid+adoquery,一个小时就搞定,请问大家伙,这样设计系统是不是画蛇添足??????????

解决方案 »

  1.   

    我就是这样设计的,所有的表都是一个类,不过,我的类是自动生成的,根据表结构自动生成类及相应的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
    ---------------------------------------------------------
    我们甚至可以由以上结构生成一个简单的输入界面
      

  2.   

    建议去了解一下Hibernate
    它的做法就是为每一个表生成一个类如果表比较多的话,应该要有一种根据表结构自动生成类的机制,
    否则写起来很麻烦
      

  3.   

    哪位XD有类似的demo不妨贴一个完整的出来,借鉴一下。这个是不是所谓的“平台”开发