3

我正在使用 Delphi XE7 和 FireDAC 来访问 SQLite。

当我将数据放入 TEXT 字段时,任何尾随空格或 #0 字符都会被截断。

我可以在 SQLite 或 FireDAC 中进行更改以保留尾随空格吗?

// The trailing spaces after Command don't come back from SQLite.
fFireDACQuery.ParamByName(kSQLFieldScriptCommands).AsString := 'Command          ';  
4

1 回答 1

2

禁用StrsTrim属性。该属性描述为:

TFDFormatOptions.StrsTrim

控制从字符串值中删除尾随空格和从二进制值中删除零字节。

而且您似乎想要存储二进制数据而不是文本。如果这是正确的,最好定义您的字段数据类型,例如BINARY[255]用于 255 字节的固定长度二进制字符串(255 是您使用的ShortString的最大长度)。

然后您可以通过以下方式访问此类字段的参数值:

var
  Data: RawByteString;
begin
  ReadByteDataSomehow(Data);

  FDQuery.FormatOptions.StrsTrim := False;
  FDQuery.SQL.Text := 'INSERT INTO MyTable (MyBinaryField) VALUES (:MyBinaryData)';
  FDQuery.ParamByName('MyBinaryData').AsByteStr := Data;
  FDQuery.ExecSQL;
end;
于 2017-07-14T00:30:30.223 回答