社区
C++ Builder
帖子详情
高分,如何在SQL SERVER中存储各种文件(如图象,MP3,WORD)
piantang
2002-09-20 03:05:56
我觉得好象往数据库中存储一个文件可分为两种:
其一存储文件路径;
其二存储文件本身。
我想将文档存储在数据库中应该是可行的,可是我只对字段操作过,没有对文件本身操作的经验,不知该如何做。请高手指点,谢谢了!
...全文
234
11
打赏
收藏
高分,如何在SQL SERVER中存储各种文件(如图象,MP3,WORD)
我觉得好象往数据库中存储一个文件可分为两种: 其一存储文件路径; 其二存储文件本身。 我想将文档存储在数据库中应该是可行的,可是我只对字段操作过,没有对文件本身操作的经验,不知该如何做。请高手指点,谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lifuming
2002-09-22
打赏
举报
回复
即然大家都写出了一段程序,我也写出一段吧,刚研究出来的(用的是InterBase):
读数据(照片):
TMemoryStream *memStream = new TMemoryStream;
TBlobField *tmpField = (TBlobField *)CustomerData->IBQuery2->FieldByName("photo");
tmpField->SaveToStream(memStream);
tmpField->SaveToStream(memStream);
memStream->SaveToFile("temp.bmp");
try{
Image4->Visible=True;
Image4->Picture->LoadFromFile("temp.bmp");
}catch(...){
MessageBox(NULL,"取员工照片错误!","错误",MB_ICONERROR);
};
delete memStream;
//写入照片:
if(Trim(OpenPictureDialog1->FileName)!="")
{
TMemoryStream *tmpStream = new TMemoryStream();
tmpStream->LoadFromFile(OpenPictureDialog1->FileName);
Query->ParamByName("photo")->LoadFromStream(tmpStream,ftBlob);
delete tmpStream;
};
xhfjy
2002-09-22
打赏
举报
回复
呵呵,先MARK一下啦
xiaoyu
2002-09-22
打赏
举报
回复
thank you very much
pzoon
2002-09-22
打赏
举报
回复
只于图像就使用SQL SERVER的IMAGE类型
它支持很多的图像
其它的用BLOB
Q:如何在C++Builder中存取BLOB字段的数据?
A:如果你使用的是BDE的数据访问方式(不论你使用的是BDE的数据源还是ODBC的数据源)
你可以按照下面的代码来存取BLOB字段的数据:
//读
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TBlobStream * pmem=new TBlobStream(pField,bmRead);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromStream(pmem);
Image1->Picture->Assign(pBitmap);
delete pBitmap;
delete pmem;
//写
pQuery->Edit();
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TBlobStream * pmem=new TBlobStream(pField,bmWrite);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->Assign(Image1->Picture->Graphic);
pBitmap->SaveToStream(pmem);
delete pBitmap;
delete pmem;
pQuery->Post();
如果你使用的ADO的方式来访问数据库,你可以这样写:
//读
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TADOBlobStream* pmem=new TADOBlobStream (pField,bmRead);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromStream(pmem);
Image1->Picture->Assign(pBitmap);
delete pBitmap;
delete pmem;
//写
pQuery->Edit();
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TADOBlobStream * pmem=new TADOBlobStream (pField,bmWrite);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->Assign(Image1->Picture->Graphic);
pBitmap->SaveToStream(pmem);
delete pBitmap;
delete pmem;
pQuery->Post();
pzoon
2002-09-22
打赏
举报
回复
只于图像就使用SQL SERVER的IMAGE类型
它支持很多的图像
其它的用BLOB
Q:如何在C++Builder中存取BLOB字段的数据?
A:如果你使用的是BDE的数据访问方式(不论你使用的是BDE的数据源还是ODBC的数据源)
你可以按照下面的代码来存取BLOB字段的数据:
//读
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TBlobStream * pmem=new TBlobStream(pField,bmRead);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromStream(pmem);
Image1->Picture->Assign(pBitmap);
delete pBitmap;
delete pmem;
//写
pQuery->Edit();
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TBlobStream * pmem=new TBlobStream(pField,bmWrite);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->Assign(Image1->Picture->Graphic);
pBitmap->SaveToStream(pmem);
delete pBitmap;
delete pmem;
pQuery->Post();
如果你使用的ADO的方式来访问数据库,你可以这样写:
//读
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TADOBlobStream* pmem=new TADOBlobStream (pField,bmRead);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromStream(pmem);
Image1->Picture->Assign(pBitmap);
delete pBitmap;
delete pmem;
//写
pQuery->Edit();
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TADOBlobStream * pmem=new TADOBlobStream (pField,bmWrite);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->Assign(Image1->Picture->Graphic);
pBitmap->SaveToStream(pmem);
delete pBitmap;
delete pmem;
pQuery->Post();
pzoon
2002-09-22
打赏
举报
回复
只于图像就使用SQL SERVER的IMAGE类型
它支持很多的图像
其它的用BLOB
Q:如何在C++Builder中存取BLOB字段的数据?
A:如果你使用的是BDE的数据访问方式(不论你使用的是BDE的数据源还是ODBC的数据源)
你可以按照下面的代码来存取BLOB字段的数据:
//读
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TBlobStream * pmem=new TBlobStream(pField,bmRead);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromStream(pmem);
Image1->Picture->Assign(pBitmap);
delete pBitmap;
delete pmem;
//写
pQuery->Edit();
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TBlobStream * pmem=new TBlobStream(pField,bmWrite);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->Assign(Image1->Picture->Graphic);
pBitmap->SaveToStream(pmem);
delete pBitmap;
delete pmem;
pQuery->Post();
如果你使用的ADO的方式来访问数据库,你可以这样写:
//读
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TADOBlobStream* pmem=new TADOBlobStream (pField,bmRead);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromStream(pmem);
Image1->Picture->Assign(pBitmap);
delete pBitmap;
delete pmem;
//写
pQuery->Edit();
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TADOBlobStream * pmem=new TADOBlobStream (pField,bmWrite);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->Assign(Image1->Picture->Graphic);
pBitmap->SaveToStream(pmem);
delete pBitmap;
delete pmem;
pQuery->Post();
piantang
2002-09-22
打赏
举报
回复
非常感谢各位,
容我回去试一下再给各位加分,先谢谢了!
IT-司马青衫
2002-09-21
打赏
举报
回复
只于图像就使用SQL SERVER的IMAGE类型
它支持很多的图像
其它的用BLOB
Q:如何在C++Builder中存取BLOB字段的数据?
A:如果你使用的是BDE的数据访问方式(不论你使用的是BDE的数据源还是ODBC的数据源)
你可以按照下面的代码来存取BLOB字段的数据:
//读
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TBlobStream * pmem=new TBlobStream(pField,bmRead);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromStream(pmem);
Image1->Picture->Assign(pBitmap);
delete pBitmap;
delete pmem;
//写
pQuery->Edit();
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TBlobStream * pmem=new TBlobStream(pField,bmWrite);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->Assign(Image1->Picture->Graphic);
pBitmap->SaveToStream(pmem);
delete pBitmap;
delete pmem;
pQuery->Post();
如果你使用的ADO的方式来访问数据库,你可以这样写:
//读
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TADOBlobStream* pmem=new TADOBlobStream (pField,bmRead);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromStream(pmem);
Image1->Picture->Assign(pBitmap);
delete pBitmap;
delete pmem;
//写
pQuery->Edit();
TBlobField * pField=(TBlobField *)pQuery->FieldByName("Image");
TADOBlobStream * pmem=new TADOBlobStream (pField,bmWrite);
pmem->Seek(0,soFromBeginning);
Graphics::TBitmap * pBitmap=new Graphics::TBitmap();
pBitmap->Assign(Image1->Picture->Graphic);
pBitmap->SaveToStream(pmem);
delete pBitmap;
delete pmem;
pQuery->Post();
hbxtx
2002-09-20
打赏
举报
回复
存储图片的一段代码:
TBlobStream
.h File
#include <jpeg.hpp>
.cpp File
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TQuery *Query=new TQuery(this);
Query->DatabaseName="all_ttmis";
Query->RequestLive=true;
Query->SQL->Clear();
Query->SQL->Add("select * from yourtable");
Query->Open();
Query->Edit();
TBlobField *pField=(TBlobField*)Query->FieldByName("Picture Field");
TBlobStream *pStream=new TBlobStream(pField,bmReadWrite);
Graphics::TBitmap *pBitmap=new Graphics::TBitmap();
pBitmap->LoadFromFile("Your Jpeg File");
pBitmap->SaveToStream(pStream);
pField->LoadFromStream(pStream);
Query->Post();
delete pStream;
delete pBitmap;
delete Query;
.....
}
codecb
2002-09-20
打赏
举报
回复
TMemoryStream* pms = new TMemoryStream();
TBlobStream *Stream1;
Memo1->Lines->SaveToStream(pms);
pms->Position=0;
Stream1 = new TBlobStream((TBlobField *)Form1->Table2->FieldByName("CODE"),bmReadWrite);
Stream1->CopyFrom(pms,pms->Size);
Form1->Table2->Post();
给你段我的代码,希望对你有帮助!
hailulu_wang
2002-09-20
打赏
举报
回复
用blob类型
《ACM竞赛-C/C++入门》 C语言-13
尹成老师带你步入C语言基础的殿堂,讲课生动风趣、深入浅出,全套视频内容充实,整个教程以C语言为核心,完整精彩的演练了C语言操作流程以及各种精彩的小项目等,提
高
竞赛能力,非常适合同学们学习! 清华大学尹成...
数据库帖子收集
这样的数据列表在
存储
过程
中
应该怎么样选择得到? 请问造成
SQL
2000服务不能启动的原因有哪些?
sql
server
中
有無類似于if 的函數,即像這樣select if(cancel=1,'cancel','') from sales 这样怎么返回呀!!!!记录集的返回。。 谁能跟我说说期初库存怎么样的一个业务逻辑!都要处理哪些内容!需要每月进...
WEB开发文档2 总结
http://blog.donews.com/lvjiyong/archive/2006/06/29/931071.aspx 怎样将后台生成的在内存
中
的
图
象
显示到客户端 Microsoft IE WebControls下载地址 如何在DATAGRID
中
使用JAVASCRIPT脚本控制 DataGrid
中
连接到下一页显示数据 下载
中
文名
基础
各位兄弟,在SDK编程
中
如果实现窗口分割呢?请问怎么得到一个函数的执行时间,单位毫秒!如何调试asp组件呀。用vc++调试编制的组件怎样画一个箭头?
高
分请教如何限制程序运行的方法?求助:通过编程DirectX抓屏------>masterz:再麻烦你一下,谢谢熟悉RichEdit的朋友过来看一下,RichEdit的几个问题.如何对 I/O 端口进行操作?有了该问题就有了思考(100分 献礼!)如何
关于oa系统开发平台的选择问题.
bncharm (人间兵器) :我们公司以前一直都用的是db2+delphi+Domino Lotus Notes平台。现在感觉市场对这个平台的需求不是很大,而且公司内部有种lotus平台已经落后于时代的感觉。是否真是如此?老总要求我们分析几种平台的优劣,以便选择其一作为公司将来的发展基础。诸位大大是否可以介绍一下目前比较流行的平台以及与平台相关的辅助技术与工具?
高
分相送。 zhf_karen(
C++ Builder
13,825
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章