Санирует ли ADO.NET символы подстановки (т. Е. "%" Или "_") в строковых параметрах типа SqlParameters?Кроме того, это нужно?Я пробовал поискать в Google, но трудно найти именно то, что я хочу знать.
Например, предположим, у меня есть параметризованный запрос:
string sql = "SELECT * FROM Users WHERE UserName LIKE @prefix";
SqlCommand command = new SqlCommand(sql, connection);
command.Parameters.AddWithValue("prefix", User.UserName);
//etc...
Но пользователь каким-то образом управляетчтобы получить себе имя пользователя типа %
.Его идея заключается в том, что он увидит всех пользователей, а не только тех, кого он должен был видеть.Будет ли это работать, или %
получит а) экранирование при параметризации значения, или б) будет оцениваться как литерал %
сервером SQL?
Обратите внимание, что я понимаю, что выше будетдействительно паршивый дизайн.Это всего лишь выдуманный пример.
Редактировать: Я подтвердил, что опцию b) не произошло.
declare @prefix as varchar(10);
set @prefix = '%';
select * from MyTable where MyField like @prefix;
--returns everything