【发布时间】:2015-02-19 14:13:56
【问题描述】:
我有这段代码:
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 中尝试过查询,它返回的值很好。
我检查了ExecureNonQuery 的返回值,它也按预期返回了 1。我完全迷路了。
任何帮助将不胜感激。
【问题讨论】:
-
正如其他人指出的那样,
OUTPUT没有定义输出参数(那些仅用于存储过程);而是检查结果集。顺便说一句,您的UPDATE没有WHERE。这只有在jcdSetting只有一行时才能正常工作,否则你会得到一个更新值的表。 -
表格只有一行,所以没有问题:-)
标签: c# sql sql-server-2008