我现在要一次向数据表中添加几千条记录,应该如何做速度才达到最快?不影响系统。请赐教!

解决方案 »

  1.   

    写存储过程来完成!用的是BDE还是ADO?
      

  2.   

    TO 78hgdong(蜗牛跑步) 
    我用的是ADO啊,我想用ADOQuery实现添加啊。应该怎么做呢?
      

  3.   

    能不能用代码示例啊?假如我要添加这些字段:ID, Name,Age  表名为: StudentInfo  存储过程应该怎么写呢?又该如何调用呢?本人数据库方面很欠缺,对存储过程更是没怎么接触,请高手指教。
      

  4.   

    我用的是ACCESS数据库,存储过程应该写在哪里呢?在DELPHI里用ADOQuery又如何去调用呢?
      

  5.   

    用多线程吧,不过对于access数据库,不会提高多少速度。
      

  6.   

    请问怎么在CSDN中发问题啊,我注册了但是找不到发问题的地方谢谢:
    顺便帮我看一个问题谢谢?:
    DMBacu.zjyz.SQL.Clear;
          DMBacu.zjyz.SQL.Add(' SELECT * FROM account_expressions16 where uid = '+ IntToStr(uid));
          try
            DMBacu.zjyz.Open;
            if (DMBacu.zjyz.RecordCount > 0) then
             uid := DMBacu.zjyz.FieldByName('uid').AsInteger;
             k := 2;
             Ftext := ' UPDATE account_expressions16 '
                    + ' SET ';         DMBacu.expressions_result.SQL.Clear;
             DMBacu.expressions_result.SQL.Add('SELECT * FROM account_coefficient');
             DMBacu.expressions_result.Open;
             DMBacu.expressions_result.First;
             while (not DMBacu.expressions_result.Eof) and (k <= DMBacu.zjyz.Fields.Count -1) do
             begin
               Ftext := Ftext + DMBacu.zjyz.Fields[k].FullName + ' = ';
               Faccount := DMBacu.zjyz.Fields[k].AsFloat;
               Faccounts := Faccount;
               Faccount := Faccount * 0.6 * DMBacu.expressions_result.FieldByName('quanzhong').AsFloat;
               if (Faccount > DMBacu.expressions_result.FieldByName('average').AsFloat) then
               begin
                 Faccount := Faccounts * 0.8 * DMBacu.expressions_result.FieldByName('quanzhong').AsFloat;
                 if (Faccount > DMBacu.expressions_result.FieldByName('allright').AsFloat) then
                   Faccount := Faccounts;
               end
               else
                 if (Faccount < DMBacu.expressions_result.FieldByName('inferior').AsFloat) then
                   Faccount := Faccounts * 0.2 * DMBacu.expressions_result.FieldByName('quanzhong').AsFloat
                   else
                     Faccount := Faccounts * 0.4 * DMBacu.expressions_result.FieldByName('quanzhong').AsFloat;
               if (k <> DMBacu.zjyz.Fields.Count -1) then
                 Ftext := Ftext + FloatToStr(Faccount) + ', '
               else
                 Ftext := Ftext + FloatToStr(Faccount);
               DMBacu.expressions_result.Next;
               k:= k+1;
             end;
          except
          end;程序执行到:    while (not DMBacu.expressions_result.Eof) and (k <= DMBacu.zjyz.Fields.Count -1) do就跳到了END;请问各路高手能帮我修改吗谢谢·
      

  7.   

    我用的是ACCESS数据库,怎么调用存储过程来添加记录呢?请会的举个例子好吗?
      

  8.   

    ACCESS数据库,好像不能使用存储过程的,
    只能以条一条的插入
      

  9.   

    对于ACcess数据库来说,因为是在本地运行,几千条数据根本不用考虑效率问题。如果要考虑人机界面,不妨在插入语句的循环过程中加入
    Application.ProcessMessages 处理消息循环,以免用户的界面出现死机现象。Access不支持批处理插入。
      

  10.   

    但是我插入几千条记录时CPU资源就会上升到100%啊,而且速度很慢,该如何处理呢?
      

  11.   

    请教 tttk(网络芝麻) ( 现在主要是我一插入上千条记录时,我的CPU资源占用就为100%,而且插入2000多条记录就需要1分多钟时间,这正常吗?该怎么处理呢?我现在放在线程里执行还是没什么改观。