Предаването на параметри към SQL ви спестява от необходимостта да създавате динамичен SQL низ.
Създаването на динамични SQL изрази е ОГРОМЕН риск за сигурността, тъй като хората могат да инжектират свой собствен SQL код във вашето приложение, като е възможно да изпълняват нежелани команди срещу вашите данни.
Има някои добри примери за възможни атаки с инжектиране на SQL на адрес:
Атаки с инжектиране на SQL чрез пример
Има два начина за предаване на параметри към SQL изрази. Едната е да използвате съхранени процедури, както споменахте. Другият е да използвам параметризирани заявки (което всъщност е това, което предпочитам).
Параметризирана заявка всъщност е доста лесна в .NET:
using(SqlConnection conn = new SqlConnection(connString))
{
SqlCommand command =
new SqlCommand("SELECT * FROM Users WHERE Username = @Username", conn);
command.Parameters.Add(new SqlParameter("@Username", "Justin Niessner"));
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataTable dt = new DataTable();
adapter.Fill(dt);
}
В този пример параметърът беше @Username
и използвахме Parameters
колекция от SqlCommand
обект за предаване на стойността.