我要保存jpg等图片,甚至还有cad图,但是当我选择保存的是jpg图片的时候,在
DBImage能看到图片,但是我post后就没有了,图片也没有保存到数据库里面。
怎么办呢?
delphi6 + oracle8.1.7代码:
    if OpenDialog1.Execute then
    begin
        AdoQuery.Edit;//把AdoQuery状态设置为编辑状态
        DBImage1.Picture.LoadFromFile(OpenDialog1.FileName);
        AdoQuery.Post;
    end;

解决方案 »

  1.   

    DBImage内部就把图片当作bitmap来处理,
    可以使用流来处理文件,前端使用ole控件
      

  2.   

    好像dbimage对jpg的支持就不好,用流吧,也不麻烦。
      

  3.   

    以下代码可以针对bmp和jpg两种格式,使用的是image不是dbimage,字段"pic"为image类型 
    在D5+SQL SERVER7下调试通过 procedure TForm1.save_image_BitBtnClick(Sender: TObject); 
    var 
            filename,ls_filehz_name:string; 
            StringStream1:TStringStream; 
            jpeg1:TJPEGImage; 
    begin 
            if OpenDialog1.FileName<>'' then 
                    begin 
                    filename:=OpenDialog1.FileName;                 query1.close; 
                    query1.sql.Clear; 
                    query1.sql.add('insert into t_image values(:pic_type,:pic)');                 //取得打开的图象文件的后缀名 
                    ls_filehz_name:=copy(ExtractFileExt(filename),2,3); 
                     
                    query1.ParamByName('pic_type').Asstring:=ls_filehz_name; 
                     
                    //当图象文件格式为bmp时 
                    if ls_filehz_name='bmp' then 
                    begin 
                    query1.ParamByName('pic').Assign(Image1.Picture); 
                    query1.ExecSQL; 
                    end;                 //当图象文件格式为jpg时 
                    if ls_filehz_name='jpg' then 
                            begin 
                            StringStream1:=TStringStream.create(''); 
                            jpeg1:=Tjpegimage.Create; 
                            jpeg1.Assign(Image1.Picture); 
                            jpeg1.SaveToStream(StringStream1); 
                            Query1.Parambyname('pic').AsBlob:=StringStream1.DataString; 
                            Query1.ExecSql; 
                            StringStream1.Free; 
                            jpeg1.free; 
                            end; 
                    end;                
    end; 
      

  4.   

    我最后使用ole来保存数据的。并且我把它的自动创建弹出菜单屏蔽了,否则,在没有内容的时候,双击ole控件(就是进行编辑)会出错的。