我现在在开发一套系统,我用的是delphi6.0+SQLServer2000。我现在是用Ttable + tdatasource连接数据库,然后我是一条一条新增记录到库里面,程序如下:
table_platepo.Active:=true;
    with table_platepo do
    begin
         append;
         fieldbyname('po').AsString:=edit3.Text;
         post;
    end;

解决方案 »

  1.   

    (接着上面)
    但我那样写,我老板老是说程序运行慢,启动慢,总之就是慢.
    我想,我能不能不这样一条一条提交,改成一批一批提交,但我又不知道怎么写这个一批一批提交的代码还有用什么控件。很烦的。我也看了很多网友说最好不要用table控件,为什么不要用这个控件啊,如果这个控件不好用,为什么borland公司又要开发这个控件呢。
      

  2.   

    用ADO吧,比较灵活,其实属性都差不多,你要批量提交,是什么意思? 说说你要完成的功能~~~
      

  3.   

    你了可以试一下用TQuery,TTable控件每次都会从数据库中select出所有的记录当然要慢
    你说的批量在PB中的DataWindow可以,但是Delphi好象没有相应的东西
      

  4.   

    用TQuery/TADOQuery,如果你用Ttable的话要先Active:=True,相当于
    打开数据库的所以的记录到本地(select * from tablename),这样就
    就浪费了时间,也没有必要。用TQuery/TADOQuery,那么你可以用SQL语句来添加记录,如:
    Insert into.....values....,这样就可以避免用Table所浪费的时间。少批量多批次的话,可以这样,如每100条记录提交一次,那么要有100条
    Insert语句写在Query.SQL中,可以用TStringList对象(如SqlList)来存
    储这些语句,用Query.SQL.Assign(SqlList)即可,用完后sqlList.clear,
    sqlList:=nil即可
      

  5.   

    建议不要用Ttable控件,不好,对数据库的操作很慢!
    建议用TADOQuery,灵活而且很方便!
      

  6.   

    wzrlover(流光逝水) 大哥的思路很不错!
      

  7.   

    对于数据控件强烈建议用Tquery,
    对于批量添加可以将Tquery的CACHEDUPDATES设置为TRUE 
    这样修改的数据将保存在内存中,显示快速。
    在确认修改时调用Tquery的.ApplyUpdates方法,就能实现批量保存。
      

  8.   

    如果只是加数据,只用adoconnection就可以了
    table只有在一种情况下才不得不用
      

  9.   

    建议用adoconnection 和adoquery.如果要添加数据,不如用:
    adoquery.add('insert into 数据表 values(....)');
      

  10.   

    同意“befree(似有似无)”,如果需要有返回值,可以用query 之类的控件,普通的比如insert,update之类的操作,连query都不用
      

  11.   

    我想还是用ADO吧
    不要直接更新ADODataset
    用ADODataset->DatasetProvider->ClientDateset
    更新完Clientdateset后再用Applyupdates方法回传
    如果数据量可以使用分页方法,尽可能的一次通讯不超过1000条记录
    尽可能的少和数据服务器通讯
    主与你同在
      

  12.   

    最好用TADODataSet + TDatasource连接数据库,如果必须一条一条新增记录的话,最好用存储过程,这样肯定快一些,否则就用批更新:
        with table_platepo do
        begin
             append;
             fieldbyname('po').AsString:=edit3.Text;
             append;
             fieldbyname('po').AsString:=edit4.Text;
             append;
             fieldbyname('po').AsString:=edit5.Text;
        end;
        updatebatch    ;
      

  13.   

    关注~~
    小弟想请问一下,程序运时时产生的del01.mb,del02.mb,del03.mb之类是什么东东?是不是CACHEDUPDATES的数据?
      

  14.   

    我认为你可以对数据库进行优化,例如select * from table where colum1='1'
    你将column1这个列单独设成索引,那样查询效率就会是以前的10倍,至于delphi中的方法嘛你可以参考上面其他人说的
      

  15.   

    wzrlover(流光逝水) 思路不错,在使用TABLE的同时浪费系统资源。
     所以启动肯定是慢的。