从 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 失败