Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come utilizzare la variabile stringa nell'istruzione sql

Puoi semplicemente farlo

query = "Select * From Table Where Title = " + someone;

Ma questo è un male e ti apre a SQL injection

Dovresti semplicemente usare una query parametrizzata

Qualcosa del genere dovrebbe farti iniziare

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

Dalla risposta di Jon Skeet poiché la sua era più completa della mia

Consulta i documenti per SqlCommand.Parameters per ulteriori informazioni.

Fondamentalmente non dovresti incorporare i tuoi valori all'interno dell'SQL stesso per vari motivi:

  • Non è elegante mescolare codice e dati
  • Ti apre agli attacchi di SQL injection a meno che tu non stia molto attento a fuggire
  • Devi preoccuparti della formattazione e dei dettagli dell'i18n per cose come numeri, date e orari ecc
  • Quando la query rimane la stessa con solo la modifica dei valori, l'ottimizzatore ha meno lavoro da fare:può cercare direttamente la query ottimizzata precedente poiché sarà una corrispondenza perfetta in termini di SQL.