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

各位大虾,如何利用SQL server和TImage控件实现图片的动态存入、删除和显示?

楼主lorvery(堕落猎人)2005-12-04 16:55:35 在 Delphi / VCL组件开发及应用 提问

我想在程序中实现图片的动态添加、删除、显示(一个form中可以显示n张图片),图片要存放在服务器上(考虑存放在服务器的数据库中还是以文件形式存放,哪种存取方式更合理?),图片组件使用TImage还是其他控件?请各位高手提供指导或简单的代码,谢谢! 问题点数:100、回复次数:4Top

1 楼aiirii(ari-http://spaces.msn.com/members/aiirii/)回复于 2005-12-04 17:38:03 得分 0

用TBlobField对应mssql   server   的   image   字段,可以先把Bitmap.SaveToStream,  
  然后再BlobField.LoadFromStream,就存入数据库了。取出图像只需要相反操作即可。    
  ADOQuery1.Close;  
  ADOQuery1.SQL.Clear;  
  ADOQuery1.SQL.Add('insert   into   Pic   values(.....,:Pic,...)');  
    .................  
  ADOQuery1.Parameters.ParamByName('Pic').Assign(Image1.Picture.Bitmap);  
  .................  
  ADOQuery1.ExecSQL;  
  提取:  
  Image1.Picture.Bitmap.Assign(TBLOBField(ADOQuery1.Parameters.ParamByName('Pic')))  
  Top

2 楼lorvery(堕落猎人)回复于 2005-12-04 17:45:18 得分 0

我觉得图片还是以文件的形式存放在服务器上的比较好,请问如何动态读取本地磁盘上的一个图片?Top

3 楼hhzqf1980(hh)回复于 2005-12-05 09:28:31 得分 0

var   str:string;  
        ms1,ms2,ms3,ms4:tmemorystream;  
        Jpegimage1,Jpegimage2,Jpegimage3,Jpegimage4:TJpegImage;  
        extname:string;  
        maxrecord,addrecord:String;  
  begin  
      if   Edit1.Text   =   ''   then  
      begin  
          MessageDlg('生产地编码不能为空!',mtinformation,[mbOK],0);  
          Edit1.SetFocus;  
          Exit;  
      end;  
      if   Edit2.Text   =   ''   then  
      begin  
          MessageDlg('生产地名称不能为空!',mtinformation,[mbOK],0);  
          Edit2.SetFocus;  
          Exit;  
      end;  
      str:=   'Select   pL_Barcord   from   producelist   where   pL_Barcord   =   '''   +   Trim(edit1.Text)   +   '''   and   fl_id='+edit7.Text+'';  
      str:=   DBQuery(False,   str,   'pL_Barcord');  
      if   str   <>   ''   then  
      begin  
          MessageDlg('生产地编码'+Trim(edit1.Text)+'已经存在,请重新添加!',   mtInformation,   [mbOK],   0);  
          edit1.SetFocus;  
          Exit;  
      end;  
      pictostream(ms1,jpegimage1,edit3)   ;  
      pictostream(ms2,jpegimage2,edit4)   ;  
      pictostream(ms3,jpegimage3,edit5)   ;  
      pictostream(ms4,jpegimage4,edit6)   ;  
      adoquery2.Open;  
      adoquery2.append;  
      adoquery2.FieldByName('PL_Barcord').AsString:=edit1.Text;  
      adoquery2.FieldByName('fl_id').AsString:=edit7.Text;  
      adoquery2.FieldByName('PL_ProduceName').AsString:=edit2.Text;  
      adoquery2.FieldByName('PL_ProDescribe').AsString:=memo2.Text;  
      TBlobField(adoquery2.FieldbyName('PL_PicProduceFirst')).LoadFromStream(MS1);  
      TBlobField(adoquery2.FieldbyName('PL_PicProduceSecond')).LoadFromStream(MS2);  
      TBlobField(adoquery2.FieldbyName('PL_PicProduceThirdly')).LoadFromStream(MS3);  
      TBlobField(adoquery2.FieldbyName('PL_PicProduceFourthly')).LoadFromStream(MS4);  
      adoquery2.Post;  
      ms1.Free;  
      ms2.Free;  
      ms3.Free;  
      ms4.Free;  
      ///add   by   zqf///  
      maxrecord:='select   max(PL_ID)   as   PL_ID   from   producelist';  
      maxrecord:=DBQuery(false,   maxrecord,   'PL_ID');  
      addrecord:='insert   into   operaterecord   values(''producelist'',''PL_ID'','+maxrecord+',1,getdate())';  
      DBQuery(True,   addrecord,   '');  
      ///add   by   zqf///  
      showmessage('保存成功!');  
  end;Top

4 楼hhzqf1980(hh)回复于 2005-12-05 09:28:54 得分 0

procedure   pictostream(var   ms:tmemorystream;jpegimage:TJpegImage;edit:TEdit);  
  begin  
          Ms:=TMeMoryStream.Create;  
          Jpegimage:=Tjpegimage.Create;  
          if   (edit.Text='')   or   (edit.Text='无')   then   exit;  
                  try  
                    Jpegimage.LoadFromFile(edit.Text);  
                    Jpegimage.SaveToStream(Ms);  
                  finally  
                    jpegimage.Free;  
                  end;  
  end;Top

相关问题

  • 请问怎样用ADOQUERY控件把MEMO控件的内容存入数据库,SQL语句怎样写?
  • 高分求教:如何用代碼將Picture控件中的圖片存入MS SQL數據庫?
  • 高分送上,怎样往vb的用RICHTEXTBOX控件 控件存入化学分子式,后台数据库为SQL SERVER 7.0
  • Timage控件问题
  • TImage控件的小问题
  • 如何把一个控件存入数据库?
  • TImage控件有窗口句柄吗?
  • 如何清空TImage控件内容?
  • 如何将TImage控件旋转90度?
  • 关于 TImage 控件的怪异问题

关键词

  • 服务器
  • jpegimage
  • adoquery
  • pictostream
  • tblobfield
  • fieldbyname
  • barcord
  • pl
  • edit
  • ms

得分解答快速导航

  • 帖主:lorvery

相关链接

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

广告也精彩

反馈

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