我正在使用带有 FireDAC 的 Delphi XE7 来访问 SQLite。

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

我可以在 SQLite 或 FireDAC 中更改某些内容以保留尾随空格吗?

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

最佳答案

禁用 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;

关于SQLite FireDAC 尾随空格,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26612620/

10-14 08:16