SQL Server DataAdapter не заполняет данные

Я запускаю код для заполнения набора данных из таблицы SQL Server, но по какой-то причине он не заполняет таблицу данных. Я запустил хранимую процедуру со значениями при прохождении кода, и она возвращает строки. Я проверил с помощью SQL Server Profiler, какая команда выполняется, а затем выполнил ту же команду через SQL Server Management Studio, и она возвращает строки, но по какой-то причине в Visual Studio она не возвращает строк, но не возвращает никаких исключений.

Код:

try
{
    using (SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["Intranet"].ConnectionString))
    {
        switch (command)
        {
            case "radiobutton":
                string school = ParameterString[0];

                using (SqlDataAdapter da = new SqlDataAdapter(GET_TEMPLATE_NAMES, cnn))
                {
                    DataTable dt = new DataTable();

                    da.SelectCommand.CommandType = CommandType.StoredProcedure;
                    da.SelectCommand.Parameters.AddWithValue("@TemplateforSchool", school);

                    cnn.Open();
                    da.Fill(dt);

                    lstTemplates.DataSource = dt;
                    lstTemplates.DataBind();
                }
                break;

            case "listbox":  // If the listbox triggers the callback then update the grid
                switch (radSchools.SelectedItem.Text)
                {
                    case "Junior School":
                        StartYear = 1;
                        EndYear = 5;
                        break;

                    case "Middle School":
                        StartYear = 6;
                        EndYear = 8;
                        break;

                    case "Senior School":
                        StartYear = 9;
                        EndYear = 12;
                        break;
                }

                string TemplateName = ParameterString[0];
                int DetentionCount = Convert.ToInt16(ParameterString[1]);
                string DetentionType = ParameterString[2];

                using (SqlDataAdapter da = new SqlDataAdapter(GET_CAREGIVER_EMAIL_LIST, cnn))
                {
                    DataTable dt = new DataTable();

                    da.SelectCommand.CommandType = CommandType.StoredProcedure;
                    da.SelectCommand.Parameters.Add(new SqlParameter
                            {
                                ParameterName = "@DetentionType",
                                SqlDbType = SqlDbType.VarChar,
                                Value= DetentionType
                            });
                    da.SelectCommand.Parameters.Add(new SqlParameter
                            {
                                ParameterName="@DetentionCounter",
                                SqlDbType=SqlDbType.Int,
                                Value=DetentionCount
                            });
                    da.SelectCommand.Parameters.Add(new SqlParameter
                            {
                                ParameterName = "@StartYear",
                                SqlDbType = SqlDbType.Int,
                                Value = StartYear
                            });
                    da.SelectCommand.Parameters.Add(new SqlParameter
                            {
                                ParameterName = "@EndYear",
                                SqlDbType = SqlDbType.Int,
                                Value = EndYear
                            });

                  cnn.Open();

                  da.Fill(dt);

                  gdvCaregiverEmailList.DataSource = dt;
                  gdvCaregiverEmailList.DataBind();
             }
             break;
         }
     }
 }
 catch(Exception ex)
 {
 }

Проблема в списке: раздел оператора switch. SqlDataAdapter отлично работает в секции переключателя переключателя.

Я не уверен, что мне не хватает, поэтому любая помощь будет высоко оценена.

Я проверил SqlDataAdapter не заполняет набор данных, а также SqlDataAdapter не заполняет DataTable, но первое не имело отношения к моей ситуации, а второе не имело принятого ответа, который я мог найти.

Хранимая процедура SQL Server, которую я вызываю,

ALTER PROCEDURE [dbo].[GetCaregiverEmailList]
    @DetentionType CHAR(2),
    @DetentionCounter INT,
    @StartYear INT,
    @EndYear INT
AS
BEGIN
    SELECT DISTINCT
        sdc.StudentCode, s.Student#, s.GIVEN_NAME, s.SURNAME,
        sdc.DetentionCount, sdc.DetentionType, 
        s.GIVEN_NAME + ' ' + s.SURNAME AS FullName,
        LTRIM(s.CURRENT_YEAR) AS CurrentYear,
        i.EMAIL_HOME, RTRIM(i.SALUTATION) AS EmailTitle,  
        ax.CORR_PREFERENCE, ar.CAREGIVER_NO
    FROM  
        StudentDetentionCounter sdc
    LEFT JOIN
        [PCSchool].[dbo].[Student] s ON sdc.StudentCode = s.STUDENT#
    INNER JOIN
        [PCSchool].[dbo].[ALUMREL] ar ON sdc.StudentCode = ar.CHILD#
    LEFT JOIN 
        [PCSchool].[dbo].[IDENTITY] i ON ar.PARENT# = i.[MEMBER#]
    LEFT JOIN
        [PCSchool].[dbo].[ALUMREL_EX] ax ON ar.parent# = ax.PARENT#
    WHERE
        (ar.PARENT# <> ar.FAMILY_HASH) 
        AND ar.EN_EMAIL IN ('I','A')
        AND (ax.CORR_PREFERENCE = 1)
        AND (sdc.DetentionCount = @DetentionCounter 
             AND sdc.DetentionType = @DetentionType)
        AND (CONVERT(INT, (LTRIM(s.CURRENT_YEAR))) BETWEEN @StartYear AND @EndYear)
    ORDER BY 
        s.SURNAME
END

Команда, которая выполняется, когда я смотрю на SQL Server Profiler,

exec GetCaregiverEmailList @DetentionType='LT',@DetentionCounter=3,@StartYear=9,@EndYear=12

Ниже приведены строки, которые возвращаются, если я выполняю хранимую процедуру вручную или запускаю указанную выше команду exec.

Строки, возвращенные выполнением скрипта

Любые предложения или помощь будут высоко оценены.

С уважением, Даррен


person Darren M    schedule 18.02.2019    source источник
comment
Почему вы скрываете исключение? Вы могли получить ошибку, которую ваш код игнорирует? Первое, что я хотел бы сделать, это указать, что произошло исключение, и, как минимум, посмотреть на значение ex.Message. Это может дать вам ответ   -  person Sparky    schedule 18.02.2019
comment
привет, Спарки, что ты имеешь в виду, скрывая исключение? Когда я прохожу код, исключений не возникает. Таблица данных просто пуста.   -  person Darren M    schedule 20.02.2019
comment
Кто-нибудь знает, почему вопрос был отредактирован с большим количеством строк в коде и т. Д.?   -  person Darren M    schedule 20.02.2019
comment
Как правило, не рекомендуется показывать настоящие имена и адреса электронной почты. Если это фактический образец данных, показ его на веб-сайте может иметь юридические последствия.   -  person Sparky    schedule 20.02.2019
comment
Я отредактировал адрес электронной почты в растровом изображении перед тем, как опубликовать его, но когда я впервые задал вопрос, в примерах кода и т. Д. Были строки в примерах кода и т. Д. Просто хочу убедиться, что я не сделал ничего неправильного при публикации.   -  person Darren M    schedule 20.02.2019