Delphi+Oracle+三层+ClientDataset无法存BLOB或Long Raw字段

playstoneboy 2004-09-03 10:14:37
用Delphi的Remote Data Module连接Oracle数据库,客户端用ClientDataset连到RDM程序,从BLOB读出存到本地没问题,但本地保存附件到BLob(后改为long raw字段类型也不行),用的Oracle提供的Oracle OLEDB Provider。
同样的操作,对MS SQL Server 2K同样的用法,一切正常。是不是Oracle OLEDB驱动的问题?还是Delphi的问题?如果用ADODataset直接连接Oracle(不通过远程数据模块)也能正常读写LOB字段,但这种方式需要在客户端安装Oracle客户端和网络组件所以不可取。请有相关问题经验的同仁给个主意。
代码:

var
FileST:TStream;
attST: TStream;
attField: TBlobField;
begin
OpenDialog1.Title := '选择要写到数据库的文件';
if OpenDialog1.Execute then
begin
FileST := TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
try
with ClientDataSet2 do
begin
if not Active then Open;
Append;
FieldByName('TITLE').Value := '某某文件';
FieldByName('CONTENTASTEXT').Value := '关于什么什么的内容';
attField := ClientDataSet2.FieldByName('CONTENTASFILE') As TBlobField;
attField.BlobType := ftOraBlob;
attST := ClientDataSet2.CreateBlobStream(attField,bmReadWrite);
try
attST.CopyFrom(FileST,FileST.Size);
Post;
ApplyUpdates(-1);
finally
FreeAndNil(attST);
end;
end;
finally
FreeAndNil(FileST);
end;
end;
end;
...全文
230 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wisenowa 2004-10-12
  • 打赏
  • 举报
回复
自己写一个中间应用来完成
黄海之滨渔夫 2004-10-12
  • 打赏
  • 举报
回复
ADO的问题
john6688 2004-09-06
  • 打赏
  • 举报
回复
可在delphi按格式试试,不用attField.BlobType := ftOraBlob
Jeff20040819 2004-09-03
  • 打赏
  • 举报
回复
帮顶,学习,接分
ghy412 2004-09-03
  • 打赏
  • 举报
回复
接分

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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