Ved at overføre parametre til SQL slipper du for at skulle bygge en dynamisk SQL-streng.
At bygge dynamiske SQL-sætninger er en KÆMPE sikkerhedsrisiko, fordi folk kan injicere deres egen SQL-kode i din applikation og muligvis udføre uønskede kommandoer mod dine data.
Der er nogle gode eksempler på mulige SQL Injection-angreb på:
SQL-injektionsangreb efter eksempel
Der er to måder at overføre parametre til SQL-sætninger. Den ene er at bruge Stored Procedures som du nævnte. Den anden er at bruge parametriserede forespørgsler (hvilket faktisk er det, jeg foretrækker).
En parameteriseret forespørgsel er faktisk ret let i .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);
}
I dette eksempel var parameteren @Username
og vi brugte Parameters
samling af SqlCommand
objekt for at sende værdien.