Der er ingen algoritme nødvendig - brug bare ikke strengsammenkædning til at bygge SQL-sætninger. Brug SqlCommand.Parameters-samlingen i stedet. Dette gør al den nødvendige escape af værdier (såsom at erstatte '
). med ''
) og sikrer, at kommandoen er sikker, fordi en anden (dvs. Microsoft) har udført alle testene.
for eksempel. kalder en lagret procedure:
using (var connection = new SqlConnection("..."))
using (var command = new SqlCommand("MySprocName", connection))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.AddWithValue("@Param1", param1Value);
return command.ExecuteReader();
}
Denne teknik virker også til inline SQL-sætninger, f.eks.
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();
}