我的数据是从socket过来的,现在的做法是从socket获得一条数据就往数据库插入一条数据,现在我想过来多条后一次插入数据,以减少对数据库的访问,有人告诉我用RecordSet,可我想了半天也不会用,有人会用吗,或者有其他很好的办法,请帮个忙,谢谢。

解决方案 »

  1.   

    用Adoquery在内存中做缓冲,
    CacheSize设大点,LockType设为ltBatchOptimistic,填满后一次性提交到数据库中:adoquery.UpdateBatch;
      

  2.   

    to  zhangl_cn在内存中做缓冲怎么做呢,能不能点代码看看啊
      

  3.   

    定义登录使用信息记录结构:
    type UserLogin = record
          lLoginName: string;
         lPassWord: string;
         lSubType: string;
     lPackType:string;
       end;
    从客户端获取数据并拆分:(Server)
    lstring := Socket.ReceiveText; 
      with RUserLogin do
       begin
          lLoginName := copy(lString, 1, pos('|', lString) - 1);
         lString := copy(lString, pos('|', lString)+1, length(lString));
         lPassWord := copy(lString, 1, pos('|', lString) - 1);
         lString := copy(lString, pos('|', lString)+1, length(lString));
         lSubType := copy(lString, 1, pos('|', lString) - 1);
       end;拆分后存储好,再填入数据库