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
只有一行时,这才能正常工作,否则将返回一个更新值表。该表只有一行,因此没有问题:-)