takto čítam
function GetBlobText(SQLQ:TFDQuery; bField:string ):string;
var
bs: TMemoryStream;
sl: TStringList;
begin
sl := TStringList.Create;
bs := TMemoryStream.Create;
try
TBlobField(SQLQ.FieldByName(bField)).SaveToStream(bs);
bs.Position := 0;
if bs.Size > 0
then begin
sl.LoadFromStream(bs);
result := sl.Text;
end
else result := '';
finally
bS.Free;
sl.Free;
end;
end;
a takto zapisujem
procedure SetBlobText(trQuery:TFDQuery; text:string );
var
msp: TMemoryStream;
pSL: TStringList;
trQuery: TFDQuery;
begin
msp := TMemoryStream.Create();
pSL := TStringList.create;
pSL.Text := text;
pSL.SaveToStream(msp);
try
trQuery.sql.DefaultEncoding := System.SysUtils.TEncoding.UTF8;
trQuery.SQL.Clear;
trQuery.SQL.Add('UPDATE XXX SET ');
trQuery.SQL.Add('POZITIV = :POZITIV ');
trQuery.SQL.Add('WHERE IDT = 1');
trQuery.ParamByName('POZITIV').SetBlobRawData(msp.Size,msp.Memory);
trQuery.ExecSQL;
finally
pSL.Free;
msp.Free;
end;
end;
v podstate to funguje, ale bol som upozornený, že existuje niečo elegantnejšie
(pre XE5)
ak máte nejaké vylepšenie, sem s ním,
vďaka aj za iných