Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como usar a variável string na instrução sql


Você pode apenas fazer isso
query = "Select * From Table Where Title = " + someone;

Mas isso é ruim e abre você para SQL Injection

Você deve usar apenas uma consulta parametrizada

Algo assim deve fazer você começar
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);
}

Da resposta de Jon Skeet, já que a dele era mais completa que a minha

Consulte os documentos para SqlCommand.Parameters Para maiores informações.

Basicamente, você não deve incorporar seus valores no próprio SQL por vários motivos:
  • É deselegante misturar código e dados
  • Isso abre espaço para ataques de injeção de SQL, a menos que você tenha muito cuidado ao escapar
  • Você precisa se preocupar com a formatação e os detalhes do i18n para coisas como números, datas e horas etc.
  • Quando a consulta permanece a mesma com apenas os valores mudando, o otimizador tem menos trabalho a fazer - ele pode procurar a consulta otimizada anterior diretamente, pois será uma correspondência perfeita em termos do SQL.