TQuery组件实现对一个BLOB字段的读写。(50分)

  • 主题发起人 主题发起人 djimmy
  • 开始时间 开始时间
D

djimmy

Unregistered / Unconfirmed
GUEST, unregistred user!
请看下面的代码
procedure TForm1.Button3Click(Sender: TObject);
var
Se : TBlobStream;
begin

Query1.SQL.Clear;
Query1.SQL.Add('select * from TestBlo');
Query1.Open;

Query1.Edit; //在这里抛出异常,无法打开一个只读的数据集。
if Query1.State in [dsEdit,dsInsert] then begin
try
Se := TBlobStream.Create(Query1.FieldByName('BOB') as TBlobField,bmWrite);
...
finally
Se.Free;
end
end;
我想用TQuery组件对一个BLOB字段的读写,根据联机帮助Query必须在插入或编辑的状态下,
但在Query1.Edit抛出异常。请问各位高手如何解决这个问题,是否有其他方法实现TQuery
组件对BLOB字段的读写。
 
你的query1.requessize设为true.
 
用Table代替Query可实现此功能
 
yourstream : TMemoryStream;

yourstream.position := 0;
(dataset.fieldbyname('fieldname') as TBolbField).Savetostream(yourstream);
(dataset.fieldbyname('fieldname') as TBolbField).LoadFromStream(yourstream);
 
Query的读取:1.先将字段值存到Stream中,2.再用IMAGE控件显示出来。
(query1.fieldbyname('fieldname') as TBolbField).Savetostream(yourstream);
Query的写入最好不要用Query.edit,用另一个Query insert 或 update
(query1.fieldbyname('fieldname') as TBolbField).LoadFromStream(yourstream);
 
写的话:query1.fieldbyname('fieldname')).assign(image1.picture.bitmap);
读的话:image1.picture.bitmap.assingn(TBolbField(query1.fieldbyname('fieldname')));
 
多谢各位的指教。
xieha多谢你的提示,我已经用TTable组件实现对BLOB字段的读写。
 
后退
顶部