DGKumar Ответов: 2

Как предотвратить SQL-инъекцию для запроса, который имеет предложение between?


Ниже я - это мой запрос
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;


Я уже пробовал с нижеследующим
string query = SELECT * FROM Products
WHERE Price BETWEEN @fromNum AND @toNum;";

cmd.Parameters.Add("@fromNum" fromNumber);
cmd.Parameters.Add("@toNum" toNumber);
получаю отсутствующее выражение лица.

Что я уже пробовал:

Я уже пробовал с нижеследующим
string query ="SELECT * FROM Products
WHERE Price BETWEEN @fromNum AND @toNum;";

cmd.Parameters.Add("@fromNum" fromNumber);
cmd.Parameters.Add("@toNum" toNumber);
получаю отсутствующее выражение лица.

MadMyche

Можете ли вы опубликовать фактическое исключение, которое вы получили?

2 Ответов

Рейтинг:
1

OriginalGriff

У меня нет Oracle - чему я очень рад, если честно, - но с SQL Server я бы подозревал, что проблема заключается в том, что вы не используете строку запроса - вы не показываете в своем коде, что cmd объект соединен с query объект, только что заданные значения параметров.

Ни один запрос в Oracle, по-видимому, не генерирует ошибку "отсутствующее выражение" : ORA-00936: отсутствующее выражение | TekStream[^] так что я бы начал с этого.


DGKumar

Пожалуйста, исправьте меня что-то, что неправильно в приведенном ниже запросе
ВЫБИРАТЬ *
Из табл. 1
Где метки времени между TO_DATE ('2015-05-06T15:39:00', 'YYYY-MM-DD"T"HH24:MI:SS') и TO_DATE('2015-04-06T15:39:00', 'YYYY-MM-DD"T"HH24:MI:SS');
Как добавить параметризованный запрос для приведенной выше команды
string query ="SELECT * FROM Products
Где цена между :fromDate и :toDate;";

cmd.Parameters.Add(":fromDate" fromDate);
УМК.Параметры.Добавить(":современные" современные);

Рейтинг:
1

F-ES Sitecore

Используйте AddWithValue и обязательно укажите тип int, а также убедитесь, что fromNumber и toNumber являются ints. Если нет, то используйте int.Попробуйте преобразовать их в ints. Эти вещи предотвратят SQL-инъекцию.


DGKumar

Пожалуйста, исправьте меня что-то, что неправильно в приведенном ниже запросе
ВЫБИРАТЬ *
Из табл. 1
Где метки времени между TO_DATE ('2015-05-06T15:39:00', 'YYYY-MM-DD"T"HH24:MI:SS') и TO_DATE('2015-04-06T15:39:00', 'YYYY-MM-DD"T"HH24:MI:SS');
Как добавить параметризованный запрос для приведенной выше команды
string query ="SELECT * FROM Products
Где цена между :fromDate и :toDate;";

cmd.Parameters.Add(":fromDate" fromDate);
УМК.Параметры.Добавить(":современные" современные);