var
  MyBlob: TStream;
  Myfs:TFileStream;
begin
  path:='D:\ICON\exit.bmp';
  Table1.Active:=true;
  table1.Last;
  table1.Insert;
  try
  begin
    MyBlob:=table1.CreateBlobStream(table1.FieldByName('photo'),bmReadWrite);
    MyBlob.Seek(0, soFromBeginning);
    Myfs:= TFileStream.Create(path, fmOpenRead);
    try
    begin
      MyBlob.CopyFrom(Myfs, Myfs.Size);
    end;
    finally
      Myfs.Free
    end;//try
  end;
  finally
    MyBlob.Free
  end;  //try
  table1.Post;//当图片大于100K时报错 Ivalide Blob Length不知哪里有错请指教.我用的数据库是SQL SERVER 2000
end;

解决方案 »

  1.   

    var
      MyBlob: TBlobStream;
      Myfs:TFileStream;
    begin
      path:='D:\ICON\exit.bmp';
      Table1.Active:=true;
      table1.Last;
      table1.Insert;
      try
      begin
        MyBlob:=table1.CreateBlobStream(table1.FieldByName('photo'),bmReadWrite) as tblobstream;
        MyBlob.Seek(0, soFromBeginning);
        Myfs:= TFileStream.Create(path, fmOpenRead);
        try
        begin
          MyBlob.CopyFrom(Myfs, 0);
        end;
        finally
          Myfs.Free
        end;//try
      end;
      finally
        MyBlob.Free
      end;  //try
      table1.Post;
      

  2.   

    你是不是用BDE的是的话,将BDE中的blobsize和blobs to cach改为1024这样最大可到1M
      

  3.   

    访问sql2000推荐用ADO啦,要不你以后维护可能死的很惨的。如真要用BDE,还是赞同过客的方法。
      

  4.   

    用ado试试吧!sql2000的image类型不会连100k以上都存不了吧!
    应该是数据集的限制吧!