sql >> Base de Datos >  >> RDS >> Sqlserver

¿Qué es pasar parámetros a SQL y por qué lo necesito?

Pasar parámetros a SQL le evita tener que crear una cadena SQL dinámica.

La creación de declaraciones SQL dinámicas es un GRAN riesgo de seguridad porque las personas pueden inyectar su propio código SQL en su aplicación, posiblemente ejecutando comandos no deseados contra sus datos.

Hay algunos buenos ejemplos de posibles ataques de inyección SQL en:

Ataques de inyección SQL por ejemplo

Hay dos formas de pasar parámetros a sentencias SQL. Una es usar procedimientos almacenados como mencionaste. La otra es usar consultas parametrizadas (que en realidad es lo que prefiero).

Una consulta parametrizada es bastante fácil en .NET:

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);
}

En ese ejemplo, el parámetro era @Username y usamos los Parameters colección del SqlCommand objeto para pasar el valor.