在三层C/S结构中的客户端如何获得ORACLE7.3 中BLOB字段图象数据?(300分)

  • 主题发起人 主题发起人 whinternet
  • 开始时间 开始时间
W

whinternet

Unregistered / Unconfirmed
GUEST, unregistred user!
在三层C/S结构中的客户端如何获得ORACLE7.3 中BLOB图象字段数据?(Long Law)
我已经尝试了前面那些学友的提出解决办法,好象都不可以,事情紧急,500分悬赏答案,
请求各位MIDAS高手帮助!
 
1 I have set Provider.Options:=[poFetchBlobsOnDemand,poAllowCommandText];
2 I have set BDE.Cache is verty big. >=1024
3 It's nouseful to call clientdataset.fetchblobs at client;

 
请看:353290我的回答!long raw 已经解决!
现在我基本上已经解决blob字段的问题。
 
接受答案了.
 
我在客户端取出Blob字段的数据已经实现了,可是在客户端向数据库中增加新记录时却无法实现,
Blob字段的内容没有保存到数据库中,程序执行没有报错,但重新取出后数据量为0,为什么?
Delphi5.0 + SQL server 7.0
代码如下:
procedure TfrmLoadTemplate.OpenDocandSaveClick(Sender: TObject);
var
MemSize: Integer;
Buffer: PChar;
FileStream: TFileStream;
ClientBlobStream: TClientBlobStream;
begin
if OpenDialog1.Execute then
begin
FileStream:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
with cdsTemplatedo
begin
Close;
Open;
Append;
FieldByName('Filename').AsString:=GetFileName(Opendialog1.Filename);
FieldByName('Extname').AsString:=ExtractFileExt(Opendialog1.Filename);
FieldByName('Filepath').AsString:=Opendialog1.Filename;
ClientBlobStream := TClientBlobStream.Create(FieldByName('Filecontent') as TBlobField, bmWrite);
MemSize := FileStream.Size;
Inc(MemSize);
//Make room for the buffer's null terminator.
Buffer := AllocMem(MemSize);
//Allocate the memory.
try
ClientBlobStream.Seek(0, soFrombegin
ning);
//Seek 0 bytes from the stream's end point
FileStream.Seek(0, soFrombegin
ning);
//Seek 0 bytes from the stream's end point
FileStream.Read(Buffer^,MemSize);
ClientBlobStream.Write(Buffer^,MemSize);
Post;
ApplyUpdates(-1);
finally
FreeMem(Buffer);
FileStream.Free;
ClientBlobStream.Free;
end;
end;
end;
end;
 
后退
顶部