从 SqlCommand 获取输出参数 returns null
Getting output parameter from SqlCommand returns null
我有这段代码:
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = connection;
cmd.CommandText = "UPDATE S " +
"SET S.WebId = S.WebId + 1 " +
"OUTPUT DELETED.WebId " +
"FROM jcdSetting S";
SqlParameter parameter = cmd.Parameters.Add("@id", SqlDbType.Int);
parameter.Direction = ParameterDirection.Output;
int i = cmd.ExecuteNonQuery();
webId = Convert.ToInt32(cmd.Parameters["@id"].Value);
}
由于某种原因,最后一行失败了,我尝试访问的参数始终是 DbNull
。我已经在 Management Studio 中尝试了查询,它 return 的值很好。
我已经检查了 ExecureNonQuery
的 return 值,而且 returns 1 也符合预期。我完全迷失在这里。
如有任何帮助,我们将不胜感激。
在 update
语句中使用 output
等同于 select,而从您发布的代码来看,您期望它出现在输出中名为@id.
的参数
@id从何而来?你没有在任何地方定义它。
output
在您使用的方法中它会 return 一个行集,而不是一个标量值。
我有这段代码:
using (SqlCommand cmd = new SqlCommand())
{
cmd.Connection = connection;
cmd.CommandText = "UPDATE S " +
"SET S.WebId = S.WebId + 1 " +
"OUTPUT DELETED.WebId " +
"FROM jcdSetting S";
SqlParameter parameter = cmd.Parameters.Add("@id", SqlDbType.Int);
parameter.Direction = ParameterDirection.Output;
int i = cmd.ExecuteNonQuery();
webId = Convert.ToInt32(cmd.Parameters["@id"].Value);
}
由于某种原因,最后一行失败了,我尝试访问的参数始终是 DbNull
。我已经在 Management Studio 中尝试了查询,它 return 的值很好。
我已经检查了 ExecureNonQuery
的 return 值,而且 returns 1 也符合预期。我完全迷失在这里。
如有任何帮助,我们将不胜感激。
在 update
语句中使用 output
等同于 select,而从您发布的代码来看,您期望它出现在输出中名为@id.
@id从何而来?你没有在任何地方定义它。
output
在您使用的方法中它会 return 一个行集,而不是一个标量值。