Как я могу параметризовать критерии поиска SQL?

#sql #vb.net #parameters #sql-injection #query-builder

#sql #vb.net #параметры #sql-инъекция #конструктор запросов

Вопрос:

С помощью оператора select, подобного следующему:

 Select ID, Fname, Lname, 
from Users 
where Fname @searchCriteria @Fname

Util.AddParameters(“@Fname”, tbFname.value, SqlDbType.nvarchar)
 

Как мне сделать то же самое с критериями поиска?

 Util.AddParameters(“@searchCriteria”, =, )
 

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

1. Используйте конкатенацию строк : "SELECT ID, Fname, Lname, FROM Users WHERE Fname " amp; searchCriterion amp; " @Fname" . Не позволяйте пользователю вводить значение переменной searchCriterion напрямую.

2. Вы можете использовать параметры только для значений, никакая другая часть кода SQL не может быть предоставлена через параметр; не ключевые слова, не идентификаторы и не операторы. Единственный способ, которым вы могли бы это сделать, — это если бы у вас была хранимая процедура, которая принимала эти части как текст и создавала вторичный SQL внутри, а затем выполняла его. Хотя в этом мало смысла. Как и предлагалось, используйте конкатенацию для этой части, но убедитесь, что пользователь выбирает из допустимых значений и не может ввести свой собственный вредоносный фрагмент SQL.