CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  非技术区

如何在数据库中保存图片?找到的代码有问题,请高手指点一下,感激!

楼主yantao14(yt)2004-09-01 14:43:56 在 Delphi / 非技术区 提问

 
      Var   AbitMap:TBitMap;  
    st:TStringStream;  
  begin  
  try  
      ABitMap:=TBitMap.Create;  
      aBitMap.LoadFromFile('D:\SAMPLE.BMP');  
      st:=TStringStream.create('');  
      aBitMap.SaveToStream(st);    
      Query1.Close;  
      Query1.SQL.Clear;  
      Query1.SQL.Add('INSERT   INTO   Sys_user(USER_ID,USER_PIC)   VALUES(''AA'',:pic)');  
      Query1.ParamByName('PIC').AsBlob:=st.DataString;  
      Query1.ExecSQL;  
      finally  
        abitmap.Free;  
        st.Free;  
        End;  
  上面的代码会出现死掉的情况(窗口就不能动了)  
        用   SELECT   DBMS_LOB.GETLENGTH(USER_PIC)   FROM   SYS_USER;执行结果为     0,插入的纪录成功了    
              可是blob字段User_Pic长度怎么是0呢?  
   
   
  保存于显示数据库中的图片究竟该如何做?请高手帮忙。希望把Query或者Table的重要属性也要说明  
  一下(我很菜)  
   
   
   
  问题点数:20、回复次数:3Top

1 楼chengtwn(漠孤烟)回复于 2004-09-01 15:38:52 得分 10

你参考一下吧,ACCESS的数据库,图片字段高为“OLE   对象”,能保存,但我不知道怎么查询显示出来,哪位大虾能告知,一并不胜感激!!  
  procedure   Tfrm_Main.BtnSaveToDBClick(Sender:   TObject);  
  var  
      ext:string;  
  begin  
      if   image1.Picture.Graphic   <>nil   then  
      begin  
          try  
          DM.ADOConnection.BeginTrans     ;  
          DM.ADODataSet_classMate.Edit   ;  
                DM.ADODataSet_classMate.FieldByName('相片').Assign(image1.Picture.Graphic);  
                //以下记录保存到数据库的图像格式  
                ext:=extractfileext(openpicturedialog1.FileName);  
                if   uppercase(ext)   =   '.BMP'   THEN  
                      DM.ADODataSet_classMate.FieldByName('isbmp').Value   :=1  
                      ELSE   IF   (UPPERCASE(EXT)   =   '.JPEG')   OR   (UPPERCASE(EXT)   =   '.JPG')   THEN  
                          DM.ADODataSet_classMate.FieldByName('isbmp').Value   :=0;  
          DM.ADODataSet_classMate.Post   ;  
          DM.ADOConnection.CommitTrans   ;  
          except  
          DM.ADOConnection.RollbackTrans   ;  
          showmessage('图片保存失败!');  
          end;//try  
      end;  
  end;Top

2 楼hxdarkhorse(都市狼)回复于 2004-09-01 16:39:25 得分 10

var   picname,exename:string;  
          jpegimage:TJPEGImage;  
  begin  
      if   not   (adoquery1.State   in   [dsinactive])   then   //写模式  
      begin  
      if   OpenPictureDialog1.Execute   then  
          begin  
              picname:=OpenPictureDialog1.FileName;  
              exename:=ExtractFileExt(picname);  
            if   (UpperCase(exename)='.JPG')or(UpperCase(exename)='.JPEG')   then  
                begin  
                    jpegimage:=TJPEGImage.Create;  
                      try  
                          jpegimage.LoadFromFile(picname);  
                          adoquery1.edit;  
                          DBImage1.Picture.Graphic.Assign(jpegimage);  
                          adoquery1.Post;  
                      finally  
                        jpegimage.Free;  
                      end;  
                  end  
              else  
              begin  
              adoquery1.Edit;  
              adoquery1DSDesigner13.LoadFromFile(OpenPictureDialog1.FileName);  
              adoquery1.Post;  
              end;  
          end;  
      end;  
  Top

3 楼taimier()回复于 2004-09-01 17:28:13 得分 0

本人有幼儿园收费系统项目,希望和各位delphi精英合作。特别是幼儿园考勤方面的,需要会delphi开发考勤机控制方面的人合作。电邮:taimier@yahoo.com.cn     qq   30770898Top

相关问题

  • 有关数据库连接问题,急,希望高手指点,不胜感激!
  • 能不能将XML代码写入数据库的某个字段,在将数据库字段当中的XML代码读出?请求指点!
  • 数据库学习指点
  • 从数据库中下载图片的问题。请各位指点一下,感激不尽,见者有分!
  • servler代码移植后,连接数据库报no suitable driver的错,请大家指点
  • 大家帮忙看看这段用ADO连接数据库的代码,指点小弟一下!谢谢!
  • 数据库的问题,请大家指点(第一个解决问题并提供代码者,送分20)。
  • 用dbexpress组件连接数据库,怎样用代码设置SQLConnection?高手指点!
  • 代码创建数据库
  • 100分求连接oracle数据库的自写分页代码或算法,感激不尽!

关键词

  • 数据库
  • abitmap
  • jpegimage
  • openpicturedialog
  • adodataset
  • 保存
  • classmate
  • adoquery
  • dm
  • picname

得分解答快速导航

  • 帖主:yantao14
  • chengtwn
  • hxdarkhorse

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo