我是用ADO控件写数据库的(刚学),现在我写了一条新增的代码
with adodataset1 do
    begin
       Append;
       adodataset1.FieldByName('mirrorsort').AsString:=  edit1.Text;
    end;
然后一条保存的代码
updatebatch;
现在我想请问?
1.  用adodataset连接库,如果记录有几十万条,用它连接是否够快?
2.  用adoquery如何批量新增数据?
3.  如果我库里面有相同的记录,但新增的时候不知道,因为是批量新增,那如果有重复的记录怎么办?
4.  新增记录,是用adodataset好还是adoquery好呢?

解决方案 »

  1.   

    1、不够快
    2、sql语句,batch
    3、数据库是可以进行Duplicate检查的,随你怎么使用
    4、AdoQuery
      

  2.   

    1。速度问题会有一定的影响,尽量不要一次将数据库的内容全取出
    3。增加的时候先查询一下,不就可以了?
    4。尽量不要用adodataset,它的问题比较的多,用adoquery一般就够用了
      

  3.   

    1、连接速度与数据库类型、返回数据的多少、网速的快慢很多因素都有关
    2、本人用循环批量新增数据(方法比较笨,几十万条得用一天)
    3、可以用数据库的完整性约束(Check)解决。如果主键相同就不新增
    4、不知道。本人都用AdoQuery
      

  4.   

    1、快不快关键在于你的代码怎么写了?如果其实你只要读一条记录就够了,但你来一个select  * from table1,几十万条记录一块读,怎么也快不了!还有,你的cachesize,cursortype等属性设置的是不是符合你的实情!
    2、如果要批量新增数据的话,把adodataset的locktype设置为:ltBatchOptimistic,然后需要向数据库提交的时候用updatebatch(),取消更新用cancelbatch()就行了3、如果有相同的记录,但你还是可以录入,说明你的数据库结构没有设计好,没有设置相应的主键,这样你的数据库效率不高,而且容易出问题4、新增记录,其实adodataset adoquery都差不多,因为它们在ado的原生对象中全部属于recordset对象
      

  5.   

    如果我用adoquery怎么批量新增记录啊???还有相同的主键该如何写代码控制不能新增啊??请各位大哥说详细点,最好有点代码
      

  6.   

    我用下面代码新增时,只要一active整天数据库的内容就会出来显示在dbgrid中,我现在只想先新增,然后把新增的那部份提交上去,不要整天数据库的内容都出来
      

  7.   

    是不是我上面说的不清楚啊??
    比如,我的A表中的a,b栏本来就有3条记录,我现在新增
    with adoquery1 do
        begin
           active:=true;
           append;
           FieldByName('mirrorsort').AsString:= edit1.Text;
    FieldByName('mirrorsort').AsString:= edit1.Text;
        end;