visual studio net epass ejemplo ado.net parameters oledb

studio - oledb/ado.net: obtenga el texto del comando, con todos los parámetros reemplazados



ado.net visual studio 2017 (2)

¿Es posible obtener el texto de un OleDbCommand con todos los parámetros reemplazados por sus valores? Por ejemplo, en el siguiente código estoy buscando una forma de obtener el texto de la consulta

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

después de que termine de asignar los parámetros.

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";


Si solo necesita ver qué consulta se ejecutó y no necesita trabajar con ella programáticamente, puede usar el Analizador de SQL.


No: tiene que iterar usted mismo a través de la colección de parámetros, haciendo una cadena. Reemplazar () para obtener el equivalente. ¿Es particularmente doloroso cuando tienes que usar el ? sintaxis en lugar de la sintaxis @parametername .

La razón de esto es que la cadena completa nunca se ensambla. Los parámetros se envían al servidor y se tratan como datos, y nunca se incluyen en la cadena.

De todos modos, por mi parte, entiendo tu dolor. Hubiera sido agradable si incluían algún tipo de método .ComposeSQL() que pudieras llamar para fines de depuración , que quizás también produzca una advertencia del compilador para ayudar a evitar el uso en producción.