通过ado访问sqlserver 的图片(image)字段,要求图片可以保存(jpg,bmp,*wmf)
有没有比较统一的操作方法

解决方案 »

  1.   

    var    aStream1          : TStream;
        jpg               : tjpegimage;    //在uses 加入 jpeg,db 单元
      
    插入
    jpg := tjpegimage.Create();
          try
                  dm.Query_image.open;
                  dm.query_image.insert;
                  aStream1 := dm.query_image.CreateBlobStream(dm.query_image.FieldByName('content'),bmReadWrite);
                  jpg.LoadFromFile(name);
                  jpg.SaveToStream(aStream1);
                  aStream1.Free;
                             dm.query_image.Post;       finally
          jpg.Free;
          end;取出                     if dm.query_image.State <> dsBrowse  then exit;
                         if dm.query_image.FieldByName('content').IsNull then Exit;  //判断状态,content是我表里存放jpeg的field
                         dm.query_image.open;
                    
                         aStream1 := dm.query_image.CreateBlobStream(dm.query_image.FieldByName('content'), bmRead);
                         try
                            aStream1.Position := 0;
                            jpg:= tjpegimage.Create();
                            try
                               jpg.LoadFromStream(aStream1);
                               jpg.SaveToFile(ipath); //ipath:string 存放路径与文件名
                            finally
                               jpg.Free;
                            end;
                         finally
                            aStream1.Free;
                         end;
                    end;
      

  2.   

    bmp的就更简单了,不过那么大最好转换一下
    *wmf的没试过