SP дает вывод, но SqlDataReader не - PullRequest
0 голосов
/ 04 июля 2018

Я использую SP в проекте C # для получения вывода с помощью 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();
        //}
    }

Это очень простой SP с оператором select. SP возвращает выходные данные при выполнении из SQL 2014, но при реализации описанным выше способом не возвращает никаких выходных данных. Ниже экран для справки. Screen shot

Пожалуйста, руководство.

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Пожалуйста, проверьте значения в параметрах. И используйте набор данных с методом заполнения для извлечения данных из sp вместо использования ExecuteReader ().

0 голосов
/ 04 июля 2018

Если ваша хранимая процедура не имеет специального имени [SC_GetDropdownValues] (включая квадратные скобки), вам не нужно определять квадратные скобки в вашей SqlCommand CommandText. Попробуйте:

_oCmd.CommandText = "SC_GetDropdownValues";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...