REST-DataWare
REST-DataWare copied to clipboard
Erro na validação de campo blob null nos drivers em DBWare
Descrição do bug
Os drivers na hora de validar blob via DBWare, se o blob for null dá erro de Access Violation pois na linha do Params[i].SaveToStream do código abaixo tenta salvar sem verificar se ele existe.
Else If vTempQuery.Params[A].DataType in [ftBytes, ftVarBytes, ftBlob,
ftGraphic, ftOraBlob, ftOraClob] Then
Begin
If Not Assigned(vStringStream) Then
vStringStream := TMemoryStream.Create;
Try
Params[I].SaveToStream(vStringStream);
vStringStream.Position := 0;
If vStringStream.Size > 0 Then
vTempQuery.Params[A].LoadFromStream(vStringStream, ftBlob);
Finally
If Assigned(vStringStream) Then
FreeAndNil(vStringStream);
End;
End
Comportamento esperado Correção sugerida por Francisco pra fazer esse tratamento:
Else If vTempQuery.Params[A].DataType in [ftBytes, ftVarBytes, ftBlob,
ftGraphic, ftOraBlob, ftOraClob] Then
Begin
If (Not (Params[I].IsNull)) Then
Begin
If Not Assigned(vStringStream) Then
vStringStream := TMemoryStream.Create;
Try
Params[I].SaveToStream(vStringStream);
vStringStream.Position := 0;
If vStringStream.Size > 0 Then
vTempQuery.Params[A].LoadFromStream(vStringStream, ftBlob);
Finally
If Assigned(vStringStream) Then
FreeAndNil(vStringStream);
End;
End
Else
vTempQuery.Params[A].Clear;
End
Informações técnicas:
- OS: Windows
- Versão do RDW: 2.0.5
- IDE: Delphi