我想保存bmp,jpg图片至sql server 数据库.查了下,用流的方法,可是我还不会做,
谁给个完整的实例过来.急(完整实例).  刚上找了很多,但都用不了. 请高手帮个忙.
在线等待.不胜感激!!!

解决方案 »

  1.   

    搞错了,不好意思, 我保存的不是SQL SERVER中, 而是ORACLE中。    SQL SERVER 我只用过B、S结构的C#的保存。   
    但ORALCE 的我也给你看看吧。
    if  Pnode=nil then
    begin
            MessageDlg('存储图的交换局没有指定!', mterror, [mbOk], 0);
            exit;
    end;if SavePictureDialog1.Execute  then
    BEGIN
            IF  UPPERCASE(extractfileext(savepicturedialog1.FileName ))<>'.WMF'    THEN
            BEGIN
                    MessageDlg('存储图片必需为WMF,请重新选择!', mtwarning, [mbOk], 0);
                    exit;
            END;
            QUERY3.SQL.Clear;
            Query3.SQL.Add('update J_CQ set PIC = :PIC  where  CQM = :CQM');
            Query3.ParamByName('CQM').AsString := QUERY_CQ.FIELDBYNAME('CQM').ASSTRING;
            //Query2.ParamByName('GH').LoadFromStream(MyStream,ftOraBlob);;
            //QUERY2.Open;
            Query3.ParamByName('PIC').LoadFromFile(SavePictureDialog1.FileName,ftBlob);        Query3.ExecSQL ;        if database1.InTransaction  then
                    database1.Commit ;
            database1.StartTransaction ;
            try
             database1.Commit ;         STR1:=QUERY_CQ.FIELDBYNAME('CQM').ASSTRING;
            query_CQ.close;
            query_CQ.open;
            QUERY_CQ.Locate ('CQM',STR1,[]);
            TreeView1Change(Sender, PNODE);
          except
            database1.Rollback ;
            MessageDlg('存储图不成功!', mterror, [mbOk], 0);
    end;
      

  2.   

    //保存
    procedure TForm1.Button1Click(Sender: TObject);
    var
      str : TMemoryStream;
    begin
      if OpenDialog1.Execute then
      begin
        ds.DataSet.Insert;
        str := TMemoryStream.Create;
        str.LoadFromFile(OpenDialog1.FileName);
        TBlobField(ds.DataSet.FieldByName(字段名)).LoadFromStream(str);
        //文件赋值给指定字段,以下就可以做数据库操作了
        ds.DataSet.Post;
      end;
    end;//读取
    我是先把字段中的文件流保存到本地
    TBlobField(ds.DataSet.FieldByName(字段名)).SaveToFile(文件名);
    //然后打开,方法比较笨,高手可以来指教一下
      

  3.   

    存储图片的代码:
     //存储图片
       MyJPEG := TJPEGImage.Create;
       try
        with MyJPEG do
        begin
          Assign(Image1.Picture.Graphic);
          MS:=TMemoryStream.create;
          SaveToStream(MS);
          MS.Position:=0;
          TBlobField(FieldbyName('图片')).LoadFromStream(MS);
        end;
       finally
        MyJPEG.Free;
       end;
       try
       Post;
       except
       showmessage('数据无法提交');读取图片的代码:
     if ef_adoquery.RecordCount<>0 then
            begin
            try
              tempstream:=TmemoryStream.Create();
              //将图像字段保存到流中
              TBlobField(mainform.ef_ADOQuery.FieldByName('图片')).SaveToStream(tempstream);
              ////给留定位
              tempstream.Position:=0;  
              //省城临时image
              tempjpeg:=TJPEGImage.Create;
              //存留信息
              tempjpeg.LoadFromStream(tempstream);
              //显示图像
              Image1.Picture.Bitmap.Assign(tempjpeg);
            finally
              tempstream.Free;
              tempjpeg.Free;
            end;
            end;