una - obtener resultado consulta sql c#
¿Cómo obtener la última consulta SQL ejecutada por SqlConnection? (0)
En realidad, mi escenario es un poco diferente al mencionado aquí. He hecho otra pregunta. Pero como no estoy obteniendo una solución allí, decidí cambiar el enfoque.
Tengo un objeto SqlConnection
accesible para mi código. El resto de objetos ADO.NET como SqlCommand
, SqlParameter
, etc. no son accesibles para mí. Estos otros objetos son consumidos por Dapper Extensions ORM.
Mi aplicación ejecuta consultas SQL utilizando el objeto SqlConnection
y el método Dapper Extensions. La consulta SQL se genera automáticamente por Dapper Extensions; consulta generada no es accesible para mí. Quiero registrar esta consulta SQL.
Ya tengo mi módulo de registro en su lugar y lo único que necesito es la última consulta SQL ejecutada por el objeto de conexión.
¿Cómo obtener la última consulta SQL ejecutada por SqlConnection
?
Lo siguiente no funciona porque SqlCommand
no es accesible.
Si obtengo SqlCommand
subyacente, puedo construir la consulta a partir de él usando el siguiente código; desafortunadamente, no es accesible para mí.
public string GetCommandLogString(IDbCommand command)
{
string outputText;
if(command.Parameters.Count == 0)
{
outputText = command.CommandText;
}
else
{
StringBuilder output = new StringBuilder();
output.Append(command.CommandText);
output.Append("; ");
IDataParameter objIDataParameter;
int parameterCount = command.Parameters.Count;
for(int i = 0; i < parameterCount; i++)
{
objIDataParameter = (IDataParameter)command.Parameters[i];
output.Append(string.Format("{0} = ''{1}''", objIDataParameter.ParameterName, objIDataParameter.Value));
if(i + 1 < parameterCount)
{
output.Append(", ");
}
}
outputText = output.ToString();
}
return outputText;
}