如何在DELPHI中使用原生ADO,进行存取长二进制数据?

mrchen_fj 2003-12-04 06:38:03
请教各位大虾:
在ORACLE9I中,有一表,其中有一字段为长二进制类型,如何利用原生ADO进行存取?
最好给段DEMO。
谢谢!
...全文
61 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hthunter 2003-12-05
SeaWave(NoSound)你的方法效率比较低,因为两次对同一个大容量的数据进行操作(LoadFromFile和Move),用TBlobField的话只需要进行一次操作(LoadFromFile或者LoadFromStream)。
TBlobField(ADODataSet1.FieldByName(sFieldName)).LoadFromFile(sFileName);
//or LoadFromStream,取数据时是SaveToFile或者SaveToStream
回复
SeaWave 2003-12-04
用VarArray就行啦,下面这个DEMO把任意文件存进去
var
p: Pointer;
v: Variant;
ms: TMemoryStream;
begin
ms := TMemoryStream.Create;
try
ms.LoadFromFile('c:\tmp.bin');
v := VarArrayCreate([0,ms.Size-1], varByte);
p := VarArrayLock(v);
try
Move(ms.Memory^, p^, ms.Size);
finally
VarArrayUnlock(v);
end;
finally
ms.Free;
end;
ADOCommand1.CommandText := 'insert into MyTable (MyField) values (:@V)';
ADOCommand1.Parameters.ParamByName('@V').Value := v;
ADOCommand1.Execute;
end;
回复
cutelocust 2003-12-04
李维的书上讲过,好像是Ado/Mts/COM+什么的,你自己看看吧
回复
hthunter 2003-12-04
不需要用原生ADO也可以进行二进制数据的存取啊,用TBlobField的相关方法就行了
或者你非要用原生ADO的话,可以参考李维写的《DELPHI5数据库开发技术》(不知道我有没有记错书名)
回复
相关推荐
发帖
Delphi
创建于2007-08-02

4925

社区成员

Delphi 开发及应用
申请成为版主
帖子事件
创建了帖子
2003-12-04 06:38
社区公告
暂无公告