Корректен ли этот запрос SUM ()?

#c# #.net #asp.net #sql #visual-studio

#c# #.net #asp.net #sql #visual-studio

Вопрос:

    string sql2 = "SELECT SUM(fyringsolje) FROM Informasjon WHERE fyringsolje='Kull: 2,42 kg';";
         SqlCommand myCommand2 = new SqlCommand(sql2, conn);
         kullTotaltLabel.Text = ""   (int)myCommand2.ExecuteScalar();
  

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

Комментарии:

1. вы тестировали это в среде SQL? Обычно они сообщат вам, если что-то не так с запросом.

2. Вы пробовали запускать его в консоли sql? проверьте, какое значение он там возвращает. Я также не знаю, как выглядит ваш стол, поэтому я действительно не могу вам в этом помочь. Возможно, ваше предложение where является неточным?

3. возможно ли, что вы хотели ПОСЧИТАТЬ, а не СУММИРОВАТЬ?

Ответ №1:

Это не может быть правильным. В том же операторе select вы сравниваете поле fyringsolje с текстом, что позволяет предположить, что значение является текстовым полем, и вы не можете применить к нему sum

Ответ №2:

Я сомневаюсь, что вы хотите ; в конце запроса… но просто отсутствие изменения метки предполагает, что если что-то идет не так, вы проглатываете любое генерируемое исключение.

Прежде чем исправлять запрос, исправьте дизайн так, чтобы при возникновении ошибок вы могли узнать о них — иначе вы никогда не будете уверены в том, что произошло.

Я бы также изменил последнюю строку на:

 kullTotaltLabel.Text = myCommand2.ExecuteScalar().ToString();
  

Комментарии:

1. Вы правы, блок try catch не позволил мне увидеть мою ошибку. Я вызывал строку вместо int. Я запутался, потому что не знаю норвежского, поэтому не знал, для чего предназначен столбец. Спасибо!

Ответ №3:

Я подозреваю, что причиной может быть SUM () в буквенно-цифровом столбце. Я предполагаю, что это текстовый столбец, потому что условие при выборе.

Запустите его в режиме отладки, установите точку останова во второй строке и проверьте переменную sql.