怎么把文件存到库里的BLOB字段

jiazhij 2003-10-30 11:31:27
我想把文件存到某个表里的BLOB字段,却不知道该怎么做。以前用DELPHI时用的是BDE控件,直接读文件名就可以了,可是在C++BUILDER只能使用ADO控件,这个控件我没用过,不知道怎么用,有没有人教教我,有程序例子看最好。谢谢大家。
...全文
72 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzhong2 2003-10-30
  • 打赏
  • 举报
回复
存入文件;其中PartyRequisition字段一定要是image类型(在SQL中)也就是BLOB字段
TBlobField *WordField;
if (OpenDialog1->Execute())
{

WordField = (TBlobField*)userinfoQuery->FieldByName("PartyRequisition");
WordField->LoadFromFile(OpenDialog1->FileName);
userinfoQuery->Post();
}
wt_sanlian 2003-10-30
  • 打赏
  • 举报
回复
ADOQuery控件和Query控件是一样的啊
lihongxing2002 2003-10-30
  • 打赏
  • 举报
回复
我顶
chifengwatch 2003-10-30
  • 打赏
  • 举报
回复
同意zzhong2()
gk0205 2003-10-30
  • 打赏
  • 举报
回复
哈哈
zzhong2 2003-10-30
  • 打赏
  • 举报
回复
一。直接方法
//向SQL2000中存word文档:(直接保存word文件到SQL)
TBlobField *WordField;
userinfoQuery->Edit();
//PartyRequisition为SQL中存word文档的字段,类型要为image
WordField = (TBlobField*)userinfoQuery->FieldByName("PartyRequisition");
WordField->LoadFromFile("c:\test.doc");
userinfoQuery->Post();

//从SQL中读出用直接保存方法存的word文档,并存成word文件,有两种读出方法:
1.
TBlobField *WordField;
WordField = (TBlobField*)userinfoQuery->FieldByName("PartyRequisition");
WordField->SaveToFile("c:\test.doc");

2.
TStream *Stream;
TMemoryStream *tmpStream = new TMemoryStream();
Stream = userinfoQuery->CreateBlobStream(userinfoQuery->FieldByName("PartyRequisition"),bmRead);
tmpStream->CopyFrom(Stream,Stream->Size);
tmpStream->SaveToFile("c:\test.doc");
delete Stream1;
Stream1=NULL;
delete tmpStream;


二。用TOleContainer控件
//向SQL2000中存word文档:
TStream *Stream1;

OleContainer1->CreateObjectFromFile("c:\test.doc", False);
if(userinfoQuery->State!=dsInsert&&userinfoQuery->State!=dsEdit)
userinfoQuery->Edit();
//PartyRequisition为SQL中存word文档的字段,类型要为image
Stream1=userinfoQuery->CreateBlobStream(userinfoQuery->FieldByName("PartyRequisition"), bmWrite);
try
{
OleContainer1->SaveToStream(Stream1);
((TBlobField *)userinfoQuery->FieldByName("PartyRequisition"))->LoadFromStream(Stream1);
}
__finally
{
delete Stream1;
Stream1=NULL;
userinfoQuery->Post();
}

//从SQL中读出用TOleContainer方法存的word文档,并显示在TOleContainer中
TStream *Stream1;
Stream1=userinfoQuery->CreateBlobStream(userinfoQuery->FieldByName("PartyRequisition"), bmRead);
try
{
OleContainer1->LoadFromStream(Stream1);
OleContainer1->DoVerb(ovShow);

}
__finally
{
delete Stream1;
Stream1=NULL;
}
}

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧