CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C++ Builder >  数据库及相关技术

如何将bitmap存入数据库?最好有代码,谢谢!

楼主mingzhug(珠珠)2005-04-04 20:47:38 在 C++ Builder / 数据库及相关技术 提问

如何将bitmap存入数据库?最好有代码,谢谢! 问题点数:20、回复次数:12Top

1 楼mingzhug(珠珠)回复于 2005-04-04 21:03:05 得分 0

为什么我的问题没有人回复呢?是因为分数给的少吗?Top

2 楼icwin(www.cat898.com.cn)回复于 2005-04-04 21:41:19 得分 5

(1).写入数据库  
  //---------------------------------------------------------------------------  
   
  void   __fastcall   TForm1::BitBtnFileLoadClick(TObject   *Sender)  
  {  
  if(DM->ADOQuery1->State!=dsEdit)  
  {  
  ShowMessage("数据库不在编辑和插入状态!");  
  return;  
  }  
   
  String   fn;  
  OpenDialog1->Filter   =   "所有文件(*.*)|*.*";  
  if(OpenDialog1->Execute())  
  fn   =   OpenDialog1->FileName;  
  if(   (!fn.IsEmpty())   &&   FileExists(fn)   )  
  {  
  (dynamic_cast<TBlobField   *>(DM->ADOQuery1->FieldByName("FileBody")))->LoadFromFile(fn);  
   
                  String   sExt   =   ExtractFileExt(fn);  
                  String   sFn   =   ExtractFileName(fn);  
                  sFn   =   sFn.SubString(0,sFn.Length()-sExt.Length());  
   
  DM->ADOQuery1->FieldByName("FileName")->AsString   =   sFn;  
  DM->ADOQuery1->FieldByName("Ext")->AsString   =   sExt;  
  }  
  }  
   
   
  //(2)从数据库中导出成文件.  
  //---------------------------------------------------------------------------  
   
  void   __fastcall   TForm1::BitBtnExportFileClick(TObject   *Sender)  
  {  
  String   ext   =   DM->ADOQuery1->FieldByName("Ext")->AsString;  
          ext   =   ext.Trim();  
  SaveDialog1->FileName   =   DM->ADOQuery1->FieldByName("FileName")->AsString;  
  SaveDialog1->Filter   =   ext.SubString(2,ext.Length()).UpperCase()   +   "   文件|*"   +   ext   +   "|所有文件(*.*)|*.*";  
  SaveDialog1->DefaultExt   =   ext;  
  if(SaveDialog1->Execute())  
  {  
  (dynamic_cast<TBlobField   *>(DM->ADOQuery1->FieldByName("FileBody")))->SaveToFile(SaveDialog1->FileName);  
  }  
  }  
   
  +++++++++++++++++++++++Top

3 楼Friecin(雪客)回复于 2005-04-04 22:26:34 得分 5

在数据库中先添加一个   Image   类型的字段(myFile):  
   
  写入:  
      ADOQueryDoc->Append();  
      TBlobField   *Field   =   (TBlobField*)ADOQuery->FieldByName("MyFile");  
      Field->LoadFromFile(   "c:\\aaa.bmp"   );  
      ADOQueryDoc->Post();  
   
  读出:  
      TBlobField   *Field   =   (TBlobField*)ADOQueryDoc->FieldByName("Content");  
      Field->SaveToFile("c:\\Temp\\aaa.bmp");  
     
  开打从数据库中读出的文件:  
  ShellExecute(Handle,"Open","c:\\Temp\\aaa.doc",0,0,SW_SHOW);  
  Top

4 楼mingzhug(珠珠)回复于 2005-04-04 23:22:36 得分 0

对不起,我是想问可不可以把一个Tbitmap中的数据存入到数据库的blob字段?而不是把bmp文件存入数据库。那位能帮忙解答一下,谢啦!也谢谢以上两位^_^Top

5 楼oddtree()回复于 2005-04-05 00:36:51 得分 0

能说具体点吗?  
  是不是说Tbitmap的大小\名称\高度\宽度  
  是吗?Top

6 楼happyct(绿叶对大树的情怀)回复于 2005-04-05 09:24:59 得分 1

存Tbitmap的内容,和存一个Image有什么区别?  
   
  没有现存的代码,看看这个  
   
  http://search.csdn.net/Expert/topic/110/110050.xml?temp=.7182886Top

7 楼happyct(绿叶对大树的情怀)回复于 2005-04-05 09:26:42 得分 5

简单归纳  
   
  写入:  
      ADOQueryDoc->Append();  
      TBlobField   *Field   =   (TBlobField*)ADOQuery->FieldByName("MyFile");  
      //Field->LoadFromFile(   "c:\\aaa.bmp"   );  
      Field->LoadFromStream(自己的东西);  
      ADOQueryDoc->Post();  
   
  Top

8 楼happyct(绿叶对大树的情怀)回复于 2005-04-05 09:30:20 得分 0

补充一下,如果你的文件很大,记得设置一下BlobSize  
   
  Indicates   the   number   of   bytes   of   data   contained   in   the   blob   field   on   the   current   record.Top

9 楼mingzhug(珠珠)回复于 2005-04-06 16:25:27 得分 0

过程是这样的:我先显示图片,同时得到了bitmap,然后再存入数据库时,我想直接把bitmap的值存进去。你们的方法一是LoadFromFile(   "c:\\aaa.bmp"   ),我不想用这种方法;二是LoadFromStream(自己的东西);问题是怎么把bitmap读成stream?  
  Top

10 楼onemonth(CSDN真烦)回复于 2005-04-07 18:39:16 得分 4

保存bmp代码:  
   
  windows::TBitmap   *   bmp;  
  TPerson   *   per;  
  per   =   new   TPerson("张三");  
  per->SetValue<Windows::TBitmap*>("photo",   bmp);  
  per->Save();  
  Top

11 楼mingzhug(珠珠)回复于 2005-04-25 15:26:20 得分 0

我自己找到了一种简单的方法:  
                  TMemoryStream   *pMS   =   new   TMemoryStream;  
                  Bitmap1->SaveToStream(pMS);  
                  Table1imageedge->LoadFromStream(pMS);  
  Table1imageedge是一个blob型的数据库字段Top

12 楼ZengMuAnSha(曾牧暗鲨)回复于 2005-04-27 08:59:22 得分 0

FAQ   里有一大把   这是个超老问题了Top

相关问题

  • 求asp.net中用vb.net将图片存入数据库的代码!!
  • 代码分析:从读卡机上取得数据存入数据库
  • 请问Delphi5.0怎样写代码图片存入数据库。(在线等待十分急,分不够再加)
  • 为什么我这段代码不能将大对象存入ORACLE数据库,帮忙看一样
  • 文件存入Oracle数据库的BLOB类型(大对象)字段的代码,并问些相关问题
  • 请问如何我用server.urlencode()将一段html代码存入sql server数据库,读出时怎么还原?
  • 求c#示例代码:把c:\1.jpg存入sql的image字段,再从数据库读出,存为c:\2.jpg
  • 求代码,如何将一段有格式的文本按原样存入数据库?
  • 代码创建数据库
  • 如何将图片存入数据库?

关键词

  • 数据库
  • 代码
  • 文件
  • 字段
  • adoquerydoc
  • 存入
  • adoquery
  • fieldbyname
  • tblobfield
  • sfn

得分解答快速导航

  • 帖主:mingzhug
  • icwin
  • Friecin
  • happyct
  • happyct
  • onemonth

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

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