用delphi 7 做数据库应用程序,很简单的一个资料文档输入窗口,但不知如何将其数据与数据库对应表相关联,以下是我的两条思路,也请大家发表一下自己的看法和建议,谢谢:
1、利用SQL语句生成一个空的数据集。
添加adoconnection、adoquery、datasource、dbedit、dbgrid等,设置好各个控件相互的属性。设置adoquery的sql属性为select * from table,运行程序,dbgrid为显示其table中所有的记录,dbedit也会显示一条对应的数据表中当前指针的记录。这个大家都明白。如果我想在这个表中实现资料的添加工作,如果利用上面的语句,其速度、性能可想而知,可能很多人会利用SQL语句来产生一个空的数据集,最简单的方法是:select * from table where id is null;这里的id是表的主键,当然主键肯定不能为null,所以利用上面的语句赋给adoquery的sql值,肯定能够生成一个空的数据集。在这个数据集中实现添加、删除以及保存(直接POST)工作。很方便也很好利用,可是,我现在做的程序,动则百万条数据,性能肯定很差。2、动态生成数据集
于是我想到在程序运行时动态生成一个数据集。刚开始,在adoquery中手动添加新字段,但是,试了一下,却只能添加计算和查询字段,不能添加数据字段。无奈作置。上网找了些资料,或许是因为我用的是delphi 7 的关系,利用别人的代码根本就无法实现。所以想请大家帮我看看,应该如何在资料输入窗口载入时动态生成其数据结构同数据库表中一样的数据集?或者还有第三种方法?
谢谢!

解决方案 »

  1.   

    1)提高性能可以这样:
    dataset1.DisableControls;
    try
      // post data
    finally
      dataset1.EnableControls;
    end;
    这样,在提交数据时,DataWare Control全部失效。2)可以试试TClientDataSet,建立一个内存表。你想干吗就干吗。我觉得.net 中的DataSet要更牛一些。
      

  2.   

    1、我所顾忌的性能是,用SQL语句得到空数据集时,SQL每次都要在数据库中进行搜索,如果数据库数据很大,对于系统性能肯定是不少的损失,而目的却仅仅是想获得一个数据库表的结构而已。
    2、To:chechy,我刚从C#转攻delphi的,学了没几天就要开发了,一些VCL类的结构不太明白,请给个例子好吗?不胜感激。
      

  3.   

    1)这个方法可能更好,不用查询数据库。select * from Table where 1=0
    2)和你相反,我是从Delphi转攻C#。在Borland公司坚持不懈得努力下,我们公司要求任何人不得在机器安装任何Borland公司得产品,所以,例子我给不出。