Member 12919944 Ответов: 3

Как получить количество строк с меньшими значениями VB ASP


Эй ребята я хочу получить количество строк которые являются значениями меньше чем мои метки когда
я фиксирую значения и делаю вот так это работает нормально:

        con.Open()
        cmd.CommandText = "select * from tblprodinfo where quantity<5 "

 but when i do this

What I have tried:

<pre>        con.Open()
        cmd.CommandText = "select * from tblprodinfo where quantity<'" & cl.Text & "' "
        rdr = cmd.ExecuteReader
        If rdr.HasRows Then
            While rdr.Read
                crit.Text = Val(crit.Text) + 1
            End While

        End If
        con.Close()


это не работает propoerly

3 Ответов

Рейтинг:
2

Patrice T

Вы должны уточнить свой вопрос !
Непонятно, что работает, а что нет :it work fine и its not working propoerly.
Я предполагаю, что вы должны удалить одинарные кавычки "'" во втором запросе.

Никогда не создавайте SQL-запрос путем конкатенации с пользовательскими вводами, он называется "SQL-инъекция", он опасен для вашей базы данных и подвержен ошибкам.
Одна кавычка в имени - и ваша программа рухнет. Если пользовательский ввод типа "Брайан О'Коннер" может привести к сбою вашего приложения, то это уязвимость SQL-инъекции.
SQL-инъекция-Википедия[^]
SQL-инъекция[^]


Рейтинг:
1

OriginalGriff

Никогда так не делай! Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.
Начните с проверки пользовательского ввода: используйте Integer.Попробуйте преобразовать его в целочисленное значение:

Dim quant As Integer
If Not Integer.TryParse(cl.Text, quant) Then
    ' Report problem to user
    ...
    Return
End If
Затем передайте преобразованное значение в SQL через параметр:
cmd.CommandText = "SELECT * FROM  tblprodinfo WHERE quantity < @QTY"
cmd.Parameters.AddwithValue("@QTY", quant)
rdr = cmd.ExecuteReader


Рейтинг:
0

Michael_Davies

Зачем беспокоиться о DataReader и вручную подсчитывать каждую строку?

con.Open()
   cmd.CommandText = "SELECT COUNT(*) FROM  tblprodinfo WHERE quantity < @QTY"
   cmd.Parameters.AddwithValue("@QTY", quant)
   crit.Text = cmd.ExecuteScalar.Tostring
   con.Close()


Member 12919944

этот код хороший чувак, но все же он дает мне неправильный выход :/ .

Michael_Davies

Определите "неправильный вывод", SQL подсчитает количество строк, соответствующих условию, и вернет это количество, поэтому вывод не может быть неправильным, если это не то, что вы ожидали, то условие требует внимания.

Не просто говорите, что что-то не так, покажите, чего вы ожидаете и почему, и фактический результат.