Není potřeba žádný algoritmus – jen nepoužívejte zřetězení řetězců k vytváření příkazů SQL. Místo toho použijte kolekci SqlCommand.Parameters. To provede všechny nezbytné escapování hodnot (jako je nahrazení '
s ''
) a zajišťuje, že příkaz bude bezpečný, protože všechny testy provedl někdo jiný (tj. Microsoft).
např. volání uložené procedury:
using (var connection = new SqlConnection("..."))
using (var command = new SqlCommand("MySprocName", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@Param1", param1Value);
return command.ExecuteReader();
}
Tato technika funguje také pro inline příkazy SQL, např.
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();
}