我的程序如下:
var
AStream: TMemoryStream;
ABlob:TBlobField;
begin
AStream := TMemoryStream.Create;
ABlob.SaveToStream(AStream);
//////////////////////////////////////
ABlob.Dataset.Edit;
AStream.Position := 0;
ABlob.LoadFromStream(AStream);
当执行BLOB字段读写时出现:Invalid BOLB handle in record buffer 的错误。
请大家帮忙!先谢了!
var
AStream: TMemoryStream;
ABlob:TBlobField;
begin
AStream := TMemoryStream.Create;
ABlob.SaveToStream(AStream);
//////////////////////////////////////
ABlob.Dataset.Edit;
AStream.Position := 0;
ABlob.LoadFromStream(AStream);
当执行BLOB字段读写时出现:Invalid BOLB handle in record buffer 的错误。
请大家帮忙!先谢了!
比如你要操作的blob字段名为'data',对应的Table为AdoTable1,如下:
var
AStream: TMemoryStream;
ABlob: TBlobField;
begin
ABlob:= AdoTable1.FieldByName('data') as TBlobField;
略...
end;
(AdoTable1.FieldByName('data') as TBlobField).SaveToStream(AStream);
AStream.Seek(0, soFromBeginning);
ABlob.LoadFromStream(AStream);
var
s:string;
i:integer;
buffer:array [1..1024] of char;
begin
...
...
FillChar(buffer,sizeof(buffer),0);
s:=AdoTable1.FieldByName('BlobField').AsString;
for i:=1 to Length(s) do
buffer[i]:=s[i];
对不起,我忘了把ABlob:= AdoTable1.FieldByName('data') as TBlobField;写出来,在我的程序是有这句的。
TO: ALL
多谢大家帮忙。可好像都偏题了。我把我的问题详细的说一遍吧!
我的老板让我把我的程序由用SQL SERVER改为用ORACLE
在修改的时候我想用个TABLE控件打开一个有多个BLOB字段的表出现了‘缺少表达式’的错误,
我当时是用BDE直接连接ORACLE的。后来我改用ODBC连接这个错误就解决了。
可是在读写BOLB的时候就会出现‘Invalid BOLB handle in record buffer ’的错误。
这该如何解决,请大家再帮我找找原因。谢谢了!
写入Blob字段的方法
读出、写入借助stream。
写入:
var
ms:tmemorystream;
begin
ms:=TmemoryStream.Create;
ms.Loadfromfile(“1.jpg”);
if ms.size>0 then
begin
ms.position:=0;
(Clientdateste1.fieldbyname('dipicture') as Tblobfield).loadfromstream(ms);
end ;
end;读出:
var
ms:tstream;
myjpg:tjpegImage;
begin
ms:=clientdataset1.createblobstream(clientdataset1.fieldbyname('dipicture'),bmread);
if ms.size>0 then
begin
ms.position:=0;
myJpg:=tjpegimage.create;
myJpg.loadFromstream(ms);
Image1.Picture.assign(myjpg);//在Image1中显示出来
end;
end;