Não há necessidade de algoritmo - apenas não use concatenação de strings para construir instruções SQL. Em vez disso, use a coleção SqlCommand.Parameters. Isso faz todo o escape necessário de valores (como substituir
'
com ''
) e garante que o comando seja seguro porque outra pessoa (ou seja, a Microsoft) fez todos os testes. por exemplo. chamando um procedimento armazenado:
using (var connection = new SqlConnection("..."))
using (var command = new SqlCommand("MySprocName", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@Param1", param1Value);
return command.ExecuteReader();
}
Essa técnica também funciona para instruções SQL embutidas, por exemplo.
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();
}