Domanda

È possibile ottenere il testo di un OleDbCommand con tutti i parametri sostituiti con i loro valori? Per esempio. nel codice qui sotto sto cercando un modo per ottenere il testo della query

SELECT * FROM my_table WHERE c1 = 'hello' and c2 = 'world'

dopo aver finito di assegnare i parametri.

var query = "SELECT * FROM my_table WHERE c1 = ? and c2 = ?";
var cmd = new OleDbCommand(query, connection);
cmd.Parameters.Add("@p1", OleDbType.WChar).Value = "hello";
cmd.Parameters.Add("@p2", OleDbType.WChar).Value = "world";
È stato utile?

Soluzione

No: devi scorrere tu stesso la raccolta dei parametri, facendo una stringa.Replace () per ottenere l'equivalente. È particolarmente doloroso quando devi usare la sintassi ? anziché la sintassi @parametername .

Il motivo è che la stringa completa non è mai assemblata. I parametri e inviati al server e trattati come dati e non sono mai inclusi nella stringa.

Comunque, io per primo capisco il tuo dolore. Sarebbe stato bello se includessero una sorta di metodo .ComposeSQL () che potresti chiamare per scopi di debug , che forse produce anche un avvertimento del compilatore per evitare l'uso in produzione .

Altri suggerimenti

Se hai solo bisogno di vedere quale query è stata eseguita e non devi lavorare con essa a livello di codice, puoi usare SQL Profiler.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top