先谢了!

解决方案 »

  1.   

    环境为DELPHI6+SQL2000,表IMAGETEST有字段FIMAGE,类型为IMAGE.
    插入图片:
    procedure TForm1.Button2Click(Sender: TObject);
    var
       graphic1:TJpegImage;
       MS:TMemoryStream;
       //file_name:string;
    begin
       //file_name:=edpicname.Text;
       MS:=TMemoryStream.Create;
       graphic1:=TJpegImage.Create;
       Image1.Picture.LoadFromFile(opendialog1.filename);
       graphic1.LoadFromFile(opendialog1.filename);
       graphic1.SaveToStream(MS);
       MS.Position:=0;
       with  query1 do
       begin
          sql.Clear;
          sql.Add('insert into imagetest(fimage) values(:FIMAGE) ');
          //ParamByName('FIMAGE').LoadFromfile(opendialog1.filename,FtBlob);
          ParamByName('FIMAGE').LoadFromStream(MS,FtBlob);
          ExecSQL;   end;
       graphic1.free;
    end;
    读出代码:
    procedure TForm1.Button3Click(Sender: TObject);
    var
       MS:TMEmoryStream;
       JpegImage:TJpegImage;
       f: file of Byte;
    begin
       JpegImage:= TJpegImage.Create;
       MS:=TMEmoryStream.Create;
       with Query1 do
       begin
          close;
          sql.Clear;
          sql.add('select  fimage from imagetest');
          open;
          while not EOF do
          begin
             next;
          end;
          try
          TBlobField(FieldByName('fimage')).SaveToFile('tmp.jpg');
          //if GetFileSize('tmp.jpg')>0 then  //文件长度为0装入会出错
          //begin
            AssignFile(f,'tmp.jpg');
            Reset(f);        if  filesize(f)>0 then showmessage('save success');
            closefile(f);
            JpegImage.LoadFromFile('tmp.jpg');
            Image2.Picture.LoadFromFile('tmp.jpg');
          //end;
        finally
          JpegImage.Free;
        end;
       end;
    end;
    可是经测试,大于32K的图片显示就不完整,怎么解决???
      

  2.   

    一定要给我分数才行哦
    你使用的BDE方式连接数据库对吗?
    如果是的话,一定要把bde中的BLOB SIZE和BLOB TO CACHE
    重新设置为256即可解决问题