C# 从SqlCommand获取输出参数返回null

C# 从SqlCommand获取输出参数返回null,c#,sql,sql-server-2008,C#,Sql,Sql Server 2008,我有一段代码: using (SqlCommand cmd = new SqlCommand()) { cmd.Connection = connection; cmd.CommandText = "UPDATE S " + "SET S.WebId = S.WebId + 1 " + "OUTPUT DELETED.WebId " + "FROM jcdSe

我有一段代码:

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
。我在ManagementStudio中尝试了这个查询,它返回的值很好

我已经检查了
ExecureNonQuery
的返回值,并按预期返回1。我在这里完全迷路了


任何帮助都将不胜感激。

update
语句中使用
output
,相当于一个select,而从您发布的代码中,您希望它出现在名为@id的输出参数中

@id来自哪里?你还没有定义它


output
在您使用的方法中,它将返回一个行集,而不是标量值。

检查这一点:正如其他人所指出的,
output
不定义输出参数(这些参数仅用于存储过程);而是检查结果集。顺便说一句,您的
更新
没有
WHERE
。只有当
jcdSetting
只有一行时,这才能正常工作,否则将返回一个更新值表。该表只有一行,因此没有问题:-)