gpt4 book ai didi

.net - SQL Server 和 .net 支持使用参数值调用存储过程而不提供参数名称吗?

转载 作者:行者123 更新时间:2023-12-02 08:53:54 24 4
gpt4 key购买 nike

假设我在 SQL Server 中有一个名为 sp_GetData1 的存储过程,其参数为:

@Input1 int
@Input2 string

这个存储过程将返回一个数据表。为了从此存储过程获取数据表,我使用 ADO.NET。要执行此存储过程,我们必须提供参数的名称、参数的 sqldatatype 和参数的值

我有一个问题:我们可以在不提供参数名称和参数 sqldatatype 的情况下执行此存储过程(使用 ADO.NET)吗?这意味着,我只需要按顺序提供参数值。

谢谢。

最佳答案

在不直接指定参数的名称、方向和类型的情况下安全执行存储过程的一种方法是使用 SqlCommandBuilder.DeriveParameters

这将从服务器检索参数并为您创建 SQLParameter 集合。您仍然需要填充命令参数集合中的值。

...I'm assuming  a variable cmd with the command string and connection property set
SqlCommandBuilder.DeriveParameters(cmd);
cmd.Parameters[0].Value = input1;
cmd.Parameters[1].Value = input2;

访问服务器会有性能损失,但至少不用担心sql注入(inject)

旧的 SQLHelper 会执行此操作并缓存参数,因此它只执行一次。企业图书馆也会这样做。完整的 ORM 也会为您做类似的事情。

关于.net - SQL Server 和 .net 支持使用参数值调用存储过程而不提供参数名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6463010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com