Я чув, що "кожен" використовує параметризовані запити SQL для захисту від атак SQL-ін'єкцій, не підтверджуючи кожен фрагмент вводу користувача.
Як це зробити? Ви отримуєте це автоматично під час використання збережених процедур?
Тому я розумію, що це не параметризовано:
cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)
Чи було б це параметризовано?
cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)
Або мені потрібно зробити щось подібне, щоб захистити себе від ін'єкції SQL?
With command
.Parameters.Count = 1
.Parameters.Item(0).ParameterName = "@baz"
.Parameters.Item(0).Value = fuz
End With
Чи є інші переваги використання параметризованих запитів, окрім міркувань безпеки?
Оновлення: Ця чудова стаття була пов’язана в одному з посилань на запитання Гротока. http://www.sommarskog.se/dynamic_sql.html