Dan*_*rić 7 database delphi parameters vcl
Unit db.pas包含TParam类的实现,它表示数据库查询中的参数.
在测试带有大量参数的查询时,我注意到function TParam.ParamRef: TParam需要花费大量时间,因为它调用ParamByName了无索引的params搜索.
实现很简单:
function TParam.ParamRef: TParam;
begin
if not Assigned(FParamRef) then
if Assigned(Collection) and (Name <> '') then
FParamRef := TParams(Collection).ParamByName(Name) else
FParamRef := Self;
Result := FParamRef;
end;
Run Code Online (Sandbox Code Playgroud)
它可以返回self或者ParamRef,所以想法是允许某种重定向.但它确实很慢ParamByName,被称为很多,我不明白的目的.事实上,如果我修改它只是返回self一切似乎工作正常.
我看到的唯一用途就是让几个同名的参数都重定向到同一个实例.如果是这种情况,那么ParamByName超过此功能的好处肯定会影响性能.
ParamRef没有文档,private因此只在db.pas单元中相关.此外,网上没有重要的讨论.
有谁遇到过同样的问题?
我看到它的唯一用途是将多个同名参数全部重定向到同一个实例。
据我所知这是正确的。在 Delphi 中,同一参数可以多次使用,但底层数据库调用通常将它们视为单独的参数,因此最终会得到同一参数的多个实例。
SELECT * FROM SomeTable WHERE FirstName = :NAME or LastName = :NAME
Run Code Online (Sandbox Code Playgroud)
将两个参数重定向到同一实例后,修改其中一个参数也会设置另一个参数。
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |