我正在编写一个REST Data Snap服务器,并且必须将TStream保存到VarBinary(384)字段。我尝试在字段上创建CreateBlobStream,但在尝试此操作时会出现异常错误。
如何使用DBExpress保存到VarBinary字段?
with cdsInsertIssueActionTemplateDetail do
begin
Active := True;
Insert();
T11 := TMemoryStream.Create;
DM.CopyStreamToMemoryStream(Template11, T11);
BlobField := TBlobField(FieldByName('FingerTemplate'));
BS := CreateBlobStream(BlobField, bmWrite); //Exception occurs here
BS.CopyFrom(T11, T11.Size);
T11.Free;
BS.Free;
Post();
Active := False;
end;
答案 0 :(得分:0)
我终于设法通过将FingerTemplate作为TSQLQuery中的参数来实现它,如下所示:
INSERT INTO [dbo]。[tblIssueActionTemplateDetail]([ActionUID],[FingerTemplate],[FingerTemplateIndex],[FingerIndex],[IsDuress],[AddedOnDateTime],[LastModifiedDateTime]) VALUES(:ActionUID,:FingerTemplate,:FingertemplateIndex,:FingerIndex,0,:DateTime,:DateTime)
制作参数的ftBlob数据类型
begin
T21 := TMemoryStream.Create;
Template21.Position;
DM.CopyStreamToMemoryStream(Template21, T21);
BlobField := TBlobField(FieldByName('FingerTemplate'));
Params.ParamByName('FingerTemplate').SetBlobData(Template21, Template21.Size);
T21.Free;
end;