Delphi中AsInteger和Value有什么区别?

10 delphi

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

dsMyDataSet.ParamByName('ID').AsInteger := 1122; //If ID is integer
dsMyDataSet.ParamByName('ID').AsString := '1122'; //If ID is string
Run Code Online (Sandbox Code Playgroud)

dsMyDataSet.ParamByName('ID').Value := 1122; //ID is string or integer
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*xSC 12

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

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

因此,回答您的最后一个问题:不,值不会转换为正确的数据类型,您必须通过选择正确的属性来设置数据类型以分配值.