¿Cómo creo una consulta SQL parametrizada? ¿Por qué debería

Escuché que "todos" están usando consultas SQL parametrizadas para protegerse contra ataques de inyección SQL sin tener que validar cada parte de la entrada del usuario.

¿Cómo haces esto? ¿Obtiene esto automáticamente cuando utiliza procedimientos almacenados?

Así que entiendo que esto no está parametrizado:

cmdText = String.Format("SELECT foo FROM bar WHERE baz = '{0}'", fuz)

¿Sería esto parametrizado?

cmdText = String.Format("EXEC foo_from_baz '{0}'", fuz)

O necesito hacer algo más extenso como este para protegerme de la inyección de SQL?

With command
    .Parameters.Count = 1
    .Parameters.Item(0).ParameterName = "@baz"
    .Parameters.Item(0).Value = fuz
End With

¿Existen otras ventajas de usar consultas parametrizadas además de las consideraciones de seguridad?

Update: Este gran artículo fue vinculado en una de las referencias de preguntas de Grotok. @http: //www.sommarskog.se/dynamic_sql.htm

Respuestas a la pregunta(6)

Su respuesta a la pregunta