Как получить несколько значений MAX и MIN из таблицы SQL Server с помощью C # - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь получить несколько скалярных значений из одной таблицы.

Это мой запрос:

cmd.CommandText = "SELECT MAX(column1) AS bmax," +
                         "MIN(column1) AS bmin," +
                         "MAX(column2) AS amax, " +
                         "MIN(column2) AS amin," +
                         "MAX(column3) AS cmax," +
                         "MIN(column3) AS cmin " +
                  "FROM MainTable WHERE AND year > " + (DateTime.Today.Year - 1);

Как мне прочитать значения из него?Я уже попробовал следующее и заглянул в документ SqlDataReader на MSDN:

int.Parse(dr["bmax"].ToString());
int.Parse(dr[0].ToString());
int.Parse(dr[0][0].ToString());
int.Parse(dr.GetSqlValue(0).ToString());

Я знаю, что запрос работает, потому что когда я получаю исключение для одного из моих испытаний, я могу навести курсор на SqlDataReader возьмите объект и перейдите к просмотру результатов >>> [0]{system.data.common.datarecordinternal} >>> непубличные члены >>> _values{object[6]} Я вижу 6 строк со значениями, которые я пытался получить.

Я знаю, чтоЯ могу получить каждое значение отдельно, используя 6 различных запросов и ExecuteScalar, но я хотел бы использовать один и тот же запрос, если это возможно

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Вы можете использовать следующий фрагмент:

int bmax, bmin;
using (var reader = cmd.ExecuteReader())
{
    if (reader.Read())
    {
      if (!reader.IsDBNull(0))
         bmax = reader.GetInt32(0);
      if (!reader.IsDBNull(1))
         bmin = reader.GetInt32(1);
      // and so on
    }
}

Обратите внимание, что вы получите результат для первой строки из результатов запроса.

Если в наборе результатов должно быть несколько строк, рассмотрите возможность использования цикла while (reader.Read()).

0 голосов
/ 12 апреля 2019

если я правильно понимаю ваш вопрос, то что-то вроде этого должно помочь:

using (SqlDataReader reader = cmd.ExecuteReader())
            {
                if (reader.Read())
                {
                    string str0 = reader[0].ToString();
                    string str1 = reader[1].ToString();
                    string str2 = reader[2].ToString();
                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...