solo se puede hacer esto
query = "Select * From Table Where Title = " + someone;
Pero eso es malo y que se abre a la inyección de SQL
Sólo debe utilizar una consulta con parámetros
Algo como esto debería empezar
using (var cn = new SqlClient.SqlConnection(yourConnectionString))
using (var cmd = new SqlClient.SqlCommand())
{
cn.Open();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Select * From Table Where Title = @Title";
cmd.Parameters.Add("@Title", someone);
}
De la respuesta de Jon Skeet ya que la suya fue más completa que la mía
Consulte los documentos para SqlCommand.Parameters para obtener más información.
Básicamente no se debe integrar sus valores dentro del propio SQL, por diversas razones:
- Es poco elegante para mezclar código y los datos
- Se le abre a la inyección de SQL ataques a menos que esté muy cuidado de escapar
- Usted tiene que preocuparse acerca de formato y i18n detalles para cosas como los números, las fechas y los tiempos etc
- Cuando la consulta sigue siendo el mismo con sólo los valores cambio, el optimizador tiene menos trabajo por hacer - puede buscar la consulta optimizada anterior directamente, ya que será una combinación perfecta en los términos del SQL.
you shouldnt! ¿Has oído hablar de SQL Injection o consultas parametrizadas? –
sí, esta es una práctica muy mala –
aquí puede leer algunos ejemplos de inyección de SQL http://en.wikipedia.org/wiki/SQL_injection –