我有这段代码:
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。我完全迷失在这里。
任何帮助都将不胜感激。
答案 0 :(得分:2)
在output
语句中使用update
等同于选择,而在您发布的代码中,您希望它在名为的输出参数中出现@id。
@id来自哪里?你还没有在任何地方定义它。
您使用它的方法中的 output
将返回行集,而不是标量值。