Nie jest potrzebny żaden algorytm — po prostu nie używaj konkatenacji ciągów do tworzenia instrukcji SQL. Zamiast tego użyj kolekcji SqlCommand.Parameters. Wykonuje wszystkie niezbędne ucieczki wartości (takie jak zastąpienie '
z ''
) i zapewnia, że polecenie będzie bezpieczne, ponieważ ktoś inny (np. Microsoft) wykonał wszystkie testy.
np. wywołanie procedury składowanej:
using (var connection = new SqlConnection("..."))
using (var command = new SqlCommand("MySprocName", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@Param1", param1Value);
return command.ExecuteReader();
}
Ta technika działa również w przypadku wbudowanych instrukcji SQL, np.
var sql = "SELECT * FROM MyTable WHERE MyColumn = @Param1";
using (var connection = new SqlConnection("..."))
using (var command = new SqlCommand(sql, connection))
{
command.Parameters.AddWithValue("@Param1", param1Value);
return command.ExecuteReader();
}