sp提供输出,但不提供SqlDataReader

时间:2018-07-04 07:11:54

标签: c# asp.net .net sql-server sql-server-2008-r2

我在C#项目中使用SP来使用SqlDataReader检索输出。 下面是代码。

 public List<LMTUsage> GetCompanyID(string userID, int roleId, String Organisation, String BusinessArea)
    {
        List<LMTUsage> objLMT = new List<LMTUsage>();
        LMTUsage _oELMTUsage;

        SqlConnection oCon = new SqlConnection(ConfigurationManager.ConnectionStrings["LMTConnectionString"].ConnectionString);
        oCon.Open();

        try
        {
            using (SqlCommand _oCmd = new SqlCommand())
            {
                _oCmd.Connection = oCon;

                _oCmd.CommandType = CommandType.StoredProcedure;
                _oCmd.CommandText = "[SC_GetDropdownValues]";

                _oCmd.Parameters.Add(new SqlParameter("@UserId", userID));
                _oCmd.Parameters.Add(new SqlParameter("@RoleId", roleId));

                if (Organisation == "")
                    _oCmd.Parameters.Add(new SqlParameter("@Organisation", DBNull.Value));
                else
                    _oCmd.Parameters.Add(new SqlParameter("@Organisation", Organisation));

                if (BusinessArea == "")
                    _oCmd.Parameters.Add(new SqlParameter("@BusinessArea", DBNull.Value));
                else
                    _oCmd.Parameters.Add(new SqlParameter("@BusinessArea", BusinessArea));

                _oCmd.Parameters.Add(new SqlParameter("@Type", 3));


                using (SqlDataReader _oRdr = _oCmd.ExecuteReader())
                {
                   // _oRdr.Close();
                    while (_oRdr.Read())
                    {
                        _oELMTUsage = new LMTUsage();
                        _oELMTUsage.Company = _oRdr["Company"].ToString();

                        objLMT.Add(_oELMTUsage);
                    }
                    _oRdr.Close();
                }
            }
            return objLMT;
        }
        catch (Exception Ex)
        {
            throw Ex;
        }
        //finally
        //{
        //    oCon.Close();
        //    oCon.Dispose();
        //}
    }

这是带有select语句的非常简单的SP。 从SQL 2014执行时,SP返回输出,但以上述方法实现时,它不返回任何输出。 以下是参考屏幕。 Screen shot

请指导。

2 个答案:

答案 0 :(得分:0)

除非您的存储过程被专门命名为[SC_GetDropdownValues](包括方括号),否则不需要在SqlCommand的CommandText中定义方括号。试试:

_oCmd.CommandText = "SC_GetDropdownValues";

答案 1 :(得分:0)

请检查参数中的值。 并使用带有fill方法的数据集从sp中检索数据,而不是使用ExecuteReader()。

相关问题