将jpg文件以二进制格式读取后,存在sqlserver的image字段中就行了。

解决方案 »

  1.   

    用delphi写的代码//保存 
    procedure TForm1.ImageIntoDBBitBtnClick(Sender: TObject); 
    begin 
      try 
        with Query1 do 
          begin 
            close; 
            sql.clear; 
            sql.add('insert into img (imga) values(:imag)'); 
          end; 
        try 
          if FileName<>'' then 
            ParamByName('Img').LoadfromFile(FileName,ftGraphic) 
          else 
            ParamByName('Img') .asBlob:=''; 
          Query1.ExecSQL; 
        except 
          ShowMessage('图片保存出错!'); 
          exit; 
        end; 
      except 
      end; 
    end; 
     
    //读取 
    procedure TForm1.ImageFromDBBitBtnClick(Sender: TObject); 
    var 
      m_jpegstream:tmemorystream; 
    begin 
      with Query1 do 
      begin 
        close; 
        sql.clear; 
        sql.Add('select imga from img'); 
        try 
          Open; 
        except 
          exit; 
        end; 
      end; 
      if (Query1.FieldByName('imga') as tblobfield).asstring='' then 
      begin 
        exit; 
      end 
      else 
      begin 
        try 
        try 
          m_jpegStream:=TMemoryStream.Create; 
          (Query1.fieldbyname('imga') as TBlobField).SaveToStream(m_JpegStream); 
          m_JpegStream.Position:=0; 
          try 
            image2.Picture.Graphic:=nil; 
            image2.Picture.Graphic:=TJpegImage.Create; 
            image2.Picture.Graphic.LoadFromStream(m_JpegStream);  //读Jpeg 
          except 
            Image2.Picture.Bitmap.LoadFromStream(m_JpegStream);   //读Bmp 
          end; 
        except 
        end; 
        finally 
          m_JpegStream.Free; 
          Query1.Close; 
          Query1.UnPrepare; 
        end; 
      end; 
    end; 
     
    //BMP转换为JPG 
    procedure TStuXXSLForm.LoadImageBitBtnClick(Sender: TObject); 
    var 
      MyJpeg:TJpegImage; 
    begin 
      inherited; 
      if OpenPictureDialog1.Execute then 
      begin 
        FileName:=OpenPictureDialog1.FileName; 
        Image1.Picture.LoadFromFile(FileName); 
        if ExtractFileExt(FileName)='.Bmp' then 
        begin 
          MyJpeg:= TJpegImage.Create; 
          MyJpeg.Assign(Image1.Picture.Bitmap); 
          FileName:='Photo.Jpg'; 
          MyJpeg.SaveToFile(FileName); 
          MyJpeg.Free; 
        end; 
      end; 
    end;
      

  2.   


    to w_zigang:
        如何用流的形式存贮?
       
      

  3.   

    在Database里定義一個Image字段。
    前端程式:(我用VB)Set cn = New ADODB.Connection
    cn.Open "Provider=SQLOLEDB;data Source=NIPSAN;Initial Catalog=Northwind;User Id=sa;Password=;"Set rs = New ADODB.Recordset
    rs.Open "Select * from tblTest", cn, adOpenKeyset, adLockOptimisticSet mstream = New ADODB.Streammstream.Type = adTypeBinary
    mstream.Openrs.AddNew
    mstream.LoadFromFile "C:\zhou.jpg"  '把C:\zhou.jpg存進入資料庫
    rs.Fields("Word") = mstream.Readrs.Updaters.Close
    cn.Close把JPG文檔從資料庫中讀出來:
    mstream.Type = adTypeBinary
    mstream.Openmstream.Write rs.Fields("Word").Value
    mstream.SaveToFile "c:\test.jpg", adSaveCreateOverWrite