将长Unicode字符串传递给FireDac TADQuery参数

时间:2014-01-28 09:41:16

标签: delphi firedac anydac

我使用AsWideString将Unicode字符串传递给TADQuery参数。

ADQuery.Params.ParamByName('MyFld').AsWideString

但是当字符串变得太长时,我收到错误:

[MyFld]. Max len = [8002], actual len = [10522]

然后我决定使用AsMemo属性

ADQuery.Params.ParamByName('MyFld').AsMemo

在这种情况下,我的Unicode字符串无法正确显示。

解决这两个问题的方法是什么?

2 个答案:

答案 0 :(得分:4)

TFDParam类型在XE5中有一个.AsWideMemo,它应该正确接受unicode字符并绕过你遇到的大小限制。

ADQuery.Params.ParamByName('MyFld').AsWideMemo := 'Some unicode string';

答案 1 :(得分:3)

实际数据库字段分配了最大字符数限制。您无法设置超出该限制的值。它会截断该值,或者在您的情况下,会引发错误。您无法使用AsMemo设置非备注字段。继续使用AsWideString并注意数据库布局。