Předávání parametrů SQL vám ušetří nutnost vytvářet dynamický řetězec SQL.
Vytváření dynamických příkazů SQL představuje OBROVSKÉ bezpečnostní riziko, protože lidé mohou do vaší aplikace vložit svůj vlastní kód SQL a případně provést nežádoucí příkazy proti vašim datům.
Některé dobré příklady možných útoků SQL Injection jsou na adrese:
Příklad útoků SQL Injection
Existují dva způsoby předávání parametrů příkazům SQL. Jedním z nich je použití uložených procedur, jak jste zmínil. Druhým je použití parametrizovaných dotazů (což je vlastně to, co preferuji).
Parametrizovaný dotaz je v .NET ve skutečnosti docela snadný:
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);
}
V tomto příkladu byl parametr @Username
a použili jsme Parameters
kolekce SqlCommand
objekt předat hodnotu.