0
public int Test()
{
int result = 1;
SqlCommand cmd = new SqlCommand("spTest", conn);
cmd.CommandType = CommandType.StoredProcedure;
var returnParameter = cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
try
{
conn.Open();
cmd.ExecuteNonQuery();
result = Convert.ToInt32(returnParameter.Value);
}
catch (Exception e)
{
MessageBox.Show(e.Message.ToString());
}
finally
{
conn.Close();
}
return result;
}
该方法从result = 1开始,所以如果查询成功,我可以看到它变为0。我测试了这一点,它确实从1变为0.我的问题是,这是从存储过程获取默认RETURN_VALUE的正确方法吗?
从存储过程获取默认返回值?
这也将结果值从1改为0.为什么?查询尚未运行。
public int Test()
{
int result = 1;
SqlCommand cmd = new SqlCommand("spTest", conn);
cmd.CommandType = CommandType.StoredProcedure;
var returnParameter = cmd.Parameters.Add("@RETURN_VALUE", SqlDbType.Int);
returnParameter.Direction = ParameterDirection.ReturnValue;
result = Convert.ToInt32(returnParameter.Value);
try
{
conn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
MessageBox.Show(e.Message.ToString());
}
finally
{
conn.Close();
}
return result;
}
是的,它是启动存储过程的名称 - 或做它没有工作为你? – 2012-08-01 20:53:42
我问的原因是因为我有结果= Convert.ToInt32(returnParameter.Value);在运行查询之前,它将结果变量从1更改为0.所以我不确定为什么会发生这种情况,考虑到查询的执行尚未发生。 – Testifier 2012-08-01 20:54:34
增加了它,看看 – Testifier 2012-08-01 20:57:44