Appena prima di eseguire una query SQL su un database MySQL in C#, desidero registrare la query che verrà eseguita. Quello che ho ora registra solo ora SELECT * FROM foo WHERE Id = @Id
dove vorrei vedere SELECT * FROM foo WHERE Id = 5
. Come lo faccio?Ottenere la stringa di query SQL da DbCommand con i parametri
DbCommand dbCommand = dbFactory.CreateCommand();
dbCommand.CommandText = "SELECT * FROM foo WHERE Id = @Id";
DbParameter param = dbCommand.CreateParameter();
param.ParameterName = "@Id";
param.Value = 5;
dbCommand.Parameters.Add(param);
dbConnection.Open();
Log.AddVerbose(String.Format("SQL query: {0}", dbCommand.CommandText));
dbCommand.ExecuteReader();
Dipende dal sistema di ** effettivo, concreto banca dati ** si sta usando - non tutti i database relazionali che utilizzano SQL ** ** come il loro lavoro di query lingua esattamente allo stesso modo ..... si prega aggiorna i tuoi tag con il sistema di database pertinente! –
Il sistema di database in questione è MySQL, post aggiornato e tag aggiunti – BioGeek
Ciò dipende in parte dal sistema DB, ma per qualsiasi DB che valga la pena utilizzare, la stringa che stai cercando ** non esiste mai **, nemmeno sul server di database . Questo è il punto centrale delle query parametrizzate: mantenere questi dati separati dal codice. Ecco perché i parametri di query sono così importanti per prevenire gli attacchi di SQL injection: i dati dannosi non sono mai vicini alla stringa di SQL. –