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;
        }
4

1 回答 1

1

是的。虽然如果您的连接无法打开,您会在您的finally

如果这是 SQL Server,请不要以 sp 开头存储过程名称

于 2012-08-01T20:53:40.997 回答