Получить результаты из команды SQL SUM в VB
Я пытаюсь заставить SQL-сервер выполнять суммирование поля, а не мой VB-код. Этот первый сегмент кода отлично подходит для меня. Второй бросает исключение на жирный/подчеркнутый текст. Я не могу понять, что в результате должен искать dbReader.
Спасибо,
Что я уже пробовал:
' Sum up the material costs cmd = "SELECT WOBOM_AMATCST FROM WOBOM WHERE WOBOM_WOPRE='" + wopre + "' AND WOBOM_WOSUF='" + wosuf + "'" dbcmd.CommandText = cmd dbcmd.Connection = nconn dbReader = dbcmd.ExecuteReader() If dbReader.HasRows Then While (dbReader.Read) MatlCost = MatlCost + dbReader("WOBOM_AMATCST") End While End If
cmd = "SELECT SUM(WOBOM_AMATCST) FROM WOBOM WHERE WOBOM_WOPRE='" + wopre + "' AND WOBOM_WOSUF='" + wosuf + "'" dbcmd.CommandText = cmd dbcmd.Connection = nconn dbReader = dbcmd.ExecuteReader() If dbReader.HasRows Then While (dbReader.Read) MatlCost = MatlCost + dbReader("WOBOM_AMATCST") End While End If
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]
dbcmd.CommandText = "SELECT SUM(WOBOM_AMATCST) FROM WOBOM WHERE WOBOM_WOPRE = @wopre AND WOBOM_WOSUF = @wosuf" dbcmd.Parameters.AddWithValue("@wopre", wopre) dbcmd.Parameters.AddWithValue("@wosuf", wosuf)