字符串存储为“??????”使用FireDAC数组DML

时间:2018-05-14 14:26:13

标签: delphi firebird firedac firebird2.5

使用带有Delphi XE7的FireDAC阵列DML向Firebird 2.5数据库插入数据时存在此问题,将字符串数据存储为“??????”文字,图片如下:

enter image description here

我有一个TList并将它们循环传递给params:

//ADetalles is a TList<TServiciosDetRec>

ADataSet.Params.ArraySize := ADetalles.Count;

ADataSet.ParamByName('id').DataType := ftInteger;
ADataSet.ParamByName('nombre').DataType := ftString;
ADataSet.ParamByName('serv').DataType := ftInteger;
ADataSet.ParamByName('check').DataType := ftInteger;

for i := 0 to ADataSet.Params.ArraySize -1 do begin

  ADataSet.ParamByName('id').AsIntegers[i] := AIndex;
  ADataSet.ParamByName('nombre').AsStrings[i] := ADetalles.Items[i].SNombre; //<--- Here the Problem
  ADataSet.ParamByName('serv').AsIntegers[i] := ADetalles.Items[i].SCodigo;
  ADataSet.ParamByName('check').AsIntegers[i] := AListChecked.Items[ADetalles.IndexOf(ADetalles.Items[i])].Checked.ToInteger;

end;

ADataSet.Execute(ADataSet.Params.ArraySize,0);

这里记录:

  TServiciosDetRec = record
    SNombre: String;
    SCodigo: Integer;
    SSelected: Boolean;
  end;

使用普通的ExecSQL逐个插入数据,字符串存储正确,但不使用执行数组DML。

0 个答案:

没有答案