从 Anydac 移动到 Firedac 时 NULL 丢失

Posted

技术标签:

【中文标题】从 Anydac 移动到 Firedac 时 NULL 丢失【英文标题】:NULL's missing while move from Anydac to Firedac 【发布时间】:2013-12-16 15:08:43 【问题描述】:

我正在将代码从 Delphi 2007 + AnyDac 移动到 Delphi XE4 + FireDac。在AnyDac 的情况下,所有空字符串都像NULL 一样存储,而在FireDac 中,所有空字符串都像空字符串'' 一样存储。

我需要回到NULL。最好的方法是什么?我使用参数存储到数据库:

ADQuery.Params.ParamByName('Code').Value :=Code;

【问题讨论】:

你说“存储”,但这是由数据库控制的。你的数据库是什么? @Marcus,主要是由数据集控件本身(见下面的帖子)......然后它取决于数据库如何存储。 @TLama,如果您假设访问数据库的唯一点是您的数据集控件。如果 OP 回答了我的问题,还有更完整答案的空间。 【参考方案1】:

在您的数据集对象的FormatOptions 中包含(在对象检查器中将其设置为 True)StrsEmpty2Null 选项。参考文献说(我强调):

控制零长度字符串值到 NULL 值的转换。使用 StrsEmpty2Null 属性来控制是否 FireDAC 应该将长度为零的字符串值转换为 NULL 值(真)或 不是(错误)。 默认值为 False

【讨论】:

以上是关于从 Anydac 移动到 Firedac 时 NULL 丢失的主要内容,如果未能解决你的问题,请参考以下文章

使用 AnyDAC (FireDAC) 从 SQLite 表中读取切片数据 (MBTiles) 的最有效方法是啥?

在 AutoInc 字段中将 AnyDAC 应用程序迁移到 FireDAC 失败

AnyDac aka FireDac 无法生成更新查询

使用带有anydac(现在为firedac)脚本的参数获取错误

AnyDAC - 编辑前刷新记录

Delphi:从 IBO 迁移到 FireDac