10

我想知道以下与delphi中的数据集相关的两个语句之间的区别。

dsMyDataSet.ParamByName('ID').AsInteger := 1122; //If ID is integer
dsMyDataSet.ParamByName('ID').AsString := '1122'; //If ID is string

dsMyDataSet.ParamByName('ID').Value := 1122; //ID is string or integer

这些陈述是否具有相同的含义?“值”是否将整数隐式转换为字符串?

4

1 回答 1

12

例如,TParam.AsInteger属性设置参数的值和数据类型TParam.Value做同样的事情,但TParam会决定哪种类型将映射到内部的值,Variant而不是总是你想要的数据类型。

我建议您仅使用AsXXX属性来设置值,因为您将控制参数的数据类型,什么可以使您避免出现参数绑定错误。

所以,回答你的最后一个问题:不,这些值不会被转换为正确的数据类型,你必须通过选择正确的属性来设置数据类型来分配值。

于 2013-09-16T12:33:19.183 回答