gpt4 book ai didi

C# - 输出 SqlParameter 使用与给定值不同的值?

转载 作者:行者123 更新时间:2023-11-30 20:11:41 27 4
gpt4 key购买 nike

我有一个 SqlCommand,它运行一个包含两个整数输出参数的存储过程。就在 SqlCommand 运行之前,我可以看到输出参数设置为正确的值,但是当命令实际执行时,它对参数 1 使用 NULL,对参数 2 使用 0(使用 SQL Profiler 验证),无论我将参数设置为什么.

代码的简化版本是这样的:

foreach (KeyValuePair<string, object> parameter in outputParameters)
{
SqlParameter param = new SqlParameter(parameter.Key, parameter.Value);
param.Direction = ParameterDirection.Output;
command.Parameters.Add(param);
}

command.ExecuteNonQuery();

我对这里的两件事感到困惑:

1) 为什么不使用参数中的值?我可以在 command.ExecuteNonQuery() 之前放置一个断点,然后看到 command.Parameters 列表的输出参数设置正确,但是 SQL 探查器跟踪在执行查询时具有不同的参数。

2) 两个参数都是整数并且定义方式完全相同 - 为什么一个设置为 NULL 而另一个设置为 0?

最佳答案

您想将方向更改为 InputOutput(每个操作编辑)而不是输出。

当您引用输出参数时,您是在告诉代码这些值应该从实际存储过程返回,而不是从您的代码返回。即使您的代码包含一个值,您的代码实际上并不关心这些值是什么,因为您指定了输出参数。

它应该是这样的:

foreach (KeyValuePair<string, object> parameter in outputParameters)
{
SqlParameter param = new SqlParameter(parameter.Key, parameter.Value);
param.Direction = ParameterDirection.InputOutput;
command.Parameters.Add(param);
}

command.ExecuteNonQuery();

关于C# - 输出 SqlParameter 使用与给定值不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3397379/

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