image就是用来存放大容量2进制数据的。把图片的点阵直接存进去不就可以了?如果存进数据库的东西会发生变化,那存了有什么意义?肯定是你程序处理错误,才会误以为是数据库改变了你的格式。

解决方案 »

  1.   

    //保存: T
    BlobField(adoTable1.FieldByName('图1')).LoadFromFile(filename1);//读出:
    procedure TForm1.SpeedButton5Click(Sender: TObject);
    var
      m_jpegstream:tmemorystream;
      str:string;
    begin
     str:=combobox1.Text;
     with adoQuery1 do
      begin
        close;
        sql.clear;
        sql.Add('select * from 表 where id='''+edit4.text+'''');
        try
          Open;
       except
          exit;
        end;
      end;
      if (adoQuery1.FieldByName(str) as tblobfield).asstring='' then
        exit
      else
      begin
        try
        try
          m_jpegStream:=TMemoryStream.Create;
          (adoQuery1.fieldbyname(str) as TBlobField).SaveToStream(m_JpegStream);
          m_JpegStream.Position:=0;
          try
            image4.Picture.Graphic:=nil;
            image4.Picture.Graphic:=TJpegImage.Create;
            image4.Picture.Graphic.LoadFromStream(m_JpegStream);  //读Jpeg
          except
            Image4.Picture.Bitmap.LoadFromStream(m_JpegStream);  //读Bmp
          end;
       except
         end;
         finally
          m_JpegStream.Free;
          adoQuery1.Close;
        end;
      end;其实我也是在这儿搜来整理的,建议你多多使用搜索,好吗?
      

  2.   

    我的解决方法
    var
    Image1:TImage;
    begin
      Image1.Pictruer.LoadFromFile('pic');
      TableImage.Assign(Image1.Pictuere);
      Table.post;
    end;如果你的水平不是很高,一定不要是用内存流,使用文件流一可以!内存六的出错率特别高,而且不容易调试!