Das Übergeben von Parametern an SQL erspart Ihnen das Erstellen einer dynamischen SQL-Zeichenfolge.
Das Erstellen dynamischer SQL-Anweisungen stellt ein RIESIGES Sicherheitsrisiko dar, da Benutzer ihren eigenen SQL-Code in Ihre Anwendung einfügen und möglicherweise unerwünschte Befehle für Ihre Daten ausführen können.
Es gibt einige gute Beispiele für mögliche SQL-Injection-Angriffe unter:
SQL-Injection-Angriffe am Beispiel
Es gibt zwei Möglichkeiten, Parameter an SQL-Anweisungen zu übergeben. Eine besteht darin, gespeicherte Prozeduren wie von Ihnen erwähnt zu verwenden. Die andere besteht darin, parametrisierte Abfragen zu verwenden (was ich eigentlich bevorzuge).
Eine parametrisierte Abfrage ist in .NET eigentlich ganz einfach:
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);
}
In diesem Beispiel war der Parameter @Username
und wir haben die Parameters
verwendet Auflistung des SqlCommand
Objekt, um den Wert zu übergeben.