我做的是模拟小网络发邮件的
数据库是用ACCESS的,放在共享文件夹下面,客户端发件时就在客户端插入新的数据到数据库里。刚开的时候还蛮快的,一秒就完成了,但是程序开久了,插入的速度就慢很多有时还死掉了~~客户端有9台,有时一起查就可能会有几个不能插入。
怎么办呢?
插入的代码:
      with qry1 do
      begin
        SQL.Clear;
        SQL.Add('select * from sender');
        open;
        append;
        sendtime:=now;
        fieldbyname('发送时间').AsDateTime:=sendtime;
        fieldbyname('发送地址').AsString:=edtip.caption;
        fieldbyname('接收地址').AsString:=edtaddr.caption;
        fieldbyname('内容主题').AsString:=edttopic.caption;
        Tblobfield(fieldbyname('发送内容')).LoadFromStream(ms);
        fieldbyname('传送状态').AsBoolean:=true;
        fieldbyname('读状态').AsBoolean:=false;
        Refresh;
        close;
      end;

解决方案 »

  1.   

    直接用sql语句insert数据,否则你这样每次都要select一次全表
      

  2.   

    改成下面这样也可以,不用查全表      with qry1 do 
          begin 
            SQL.Clear; 
            SQL.Add('select * from sender Where 1=2'); 
            open; 
            append; 
            sendtime:=now; 
            fieldbyname('发送时间').AsDateTime:=sendtime; 
            fieldbyname('发送地址').AsString:=edtip.caption; 
            fieldbyname('接收地址').AsString:=edtaddr.caption; 
            fieldbyname('内容主题').AsString:=edttopic.caption; 
            Tblobfield(fieldbyname('发送内容')).LoadFromStream(ms); 
            fieldbyname('传送状态').AsBoolean:=true; 
            fieldbyname('读状态').AsBoolean:=false; 
            Post;
            Refresh; 
            close; 
          end;