首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

c++builder向oracle中BLOB写下文件不成功

2013-01-01 
c++builder向oracle中BLOB写入文件不成功?--创建表create table 文件写入(编号 Number Not Null,名称 Varc

c++builder向oracle中BLOB写入文件不成功?
--创建表  
create table 文件写入
(
  编号 Number Not Null,
  名称 Varchar2(20) Not Null,
  文件 Blob
);  
Insert Into 文件写入(编号,名称,文件)Values(1,'文档',empty_blob());
--这里先在数据库增加一行数据

TMemoryStream *datefile = new TMemoryStream();
datefile->LoadFromFile("c:\\test.doc");
datefile->SaveToFile("c:\\testB.doc");--经常测试这里能保存到c:\\testB.doc打开是有内容的

--写入:将c:\\TestA.doc 文件 写入 到 表:文件写入 字段(文件)中
OraQuery1->Close();
OraQuery1->SQL->Clear();
OraQuery1->SQL->Add("update 文件写入 set 文件=:aa1 where 编号=1");
OraQuery1->Prepare();
OraQuery1->ParamByName("aa1")->LoadFromStream(datefile,ftBlob);
OraQuery1->UnPrepare();
OraQuery1->ExecSQL();----这里运行通过了,但是没有正确保存到数据里??
OraQuery1->Close();
delete datefile;

--读取:
OraQuery1->Close();
OraQuery1->SQL->Clear();
OraQuery1->SQL->Add("select 文件 from 文件写入 where 编号=1");
OraQuery1->Open();--这里能返回一行记录集

--
TMemoryStream* Stream = new TMemoryStream;
((TBlobField *)OraQuery1->FieldByName("文件")))->SaveToStream(Stream);
ShowMessage(Stream->Size);--这里的值显示为 0  
delete Stream;
--

??????
是不是跟oracle的权限有关系呢?
[解决办法]
如果是权限问题该有出错提示呀,你的这个情况很奇怪
[解决办法]
((TBlobField *)OraQuery1->FieldByName("文件")))->SaveToStream(Stream);
然后要Stream->Seek(0,soFromBeginning);吧
[解决办法]
早年我在Oracle 10G上用BLOB 字段存取图片
执行通过,但总是显示不了图片 后来换了个ADOQuery的连接驱动就好了

热点排行