添加到数据库时怎么这么慢?

                            
本人刚学DELPHI,要将一文件文件写入数据库时很慢,麻烦帮忙分析一下   
  代码如下(里面的instr是自己写的函数,速度与这个函数绝对没有关系)。  
  procedure   TForm1.SpeedButton2Click(Sender:   TObject);  
  Var   RS:TADODataset;  
  var   f:textfile;  
  var   s1,s2:string;  
  var   filepath:string;  
  var   vtime,vip,vfile:string;  
  var   spacepos,spacepos2:integer;  
  var   curpath:string;  
  var   i:integer;  
  begin  
          filepath:=txtfilepath.text;  
          if   fileexists(filepath)=false   then  
          begin  
                  messagedlg('file   not   exits',mterror,[mbok],0);  
                  exit;  
          end;  
          assignfile(f,filepath);  
          reset(f);  
   
          rs:=tadodataset.Create(self);  
          rs.ConnectionString:=   'provider=microsoft.jet.oledb.4.0;data   source=F:\bhdata\program   source\delphi\log   fx\db\data.mdb;';  
          rs.CommandType:=cmdText;  
          rs.CommandText:='select   top   1   *   from   log';  
          s1:='#';  
          while   copy(s1,1,1)='#'   do  
                readln(f,s1);  
          vtime:=copy(s1,1,19);  
          spacepos:=instr(21,s1,'   ',1);  
          showmessage(inttostr(spacepos));  
          vip:=copy(s1,21,spacepos-21);  
          spacepos:=instr(spacepos,s1,'   ',5);  
          spacepos2:=instr(spacepos+1,s1,'   ',1);  
          vfile:=copy(s1,spacepos+1,spacepos2-spacepos-1);  
          rs.open;  
          rs.Insert;  
          rs.FieldByName('vip').Value:=vip;  
          rs.FieldByName('vtime').Value:=vtime;  
          rs.FieldByName('vfile').Value:=vfile;  
          rs.Post;  
          i:=2;  
          while   not   eof(f)   do  
          begin  
                  readln(f,s1);  
                  s1:=trim(s1);  
                  vtime:=copy(s1,1,19);  
                  spacepos:=instr(21,s1,'   ',1);  
                  vip:=copy(s1,21,spacepos-21);  
                  spacepos:=instr(spacepos,s1,'   ',5);  
                  spacepos2:=instr(spacepos+1,s1,'   ',1);  
                  vfile:=copy(s1,spacepos+1,spacepos2-spacepos-1);  
                  //问题就在下面,我去掉下面这几行时就快得很  
                  rs.Insert;  
                  rs.fieldbyname('vip').value:=vip;  
                  rs.fieldbyname('vtime').value:=vtime;  
                  rs.fieldbyname('vfile').value:=vfile;  
                  rs.Post;  
                  //////////////////////////////  
                  if   s1=''   then   break;  
                  i:=i+1;  
                  label2.caption:=inttostr(i);  
                  application.ProcessMessages;  
          end;  
          rs.Close;  
          rs.free;        
  end;  
 

查看回复