¿Cómo obtener la consulta SQL parametrizada (con los parámetros aplicados) antes de ejecutarla en Dapper?

c# dapper sql sql-parametrized-query

Pregunta

Necesito mi consulta sql con los parámetros aplicados para registrar porposes.

private dynamic GetInfo(int cdEmpresa)
{
    dynamic info = new ExpandoObject();

    StringBuilder sql = new StringBuilder();
    sql.AppendLine(" SELECT * from FROM EMPRESA E");
    sql.AppendLine(" WHERE cdEmpresa = @cdEmpresa ");

    using (IDbConnection cn = GetConnection(cdEmpresa).Connection)
    {
        Logger.Debug("SQL: " + sql.ToString()); // Does not apply the parameters, obviously

        cn.Open();
        info = cn.Query<dynamic>(sql.ToString(), new
        {
            cdEmpresa = cdEmpresa // i need to execute te sql to parametrize it, is there a way to parametrize it first its execution?
        }).ToList();

    }
    return infoCadastro;
}

Respuesta popular

Lo que está solicitando no existe en ningún momento mientras procesa su consulta .

Incluso cuando ejecuta la consulta, los valores de los parámetros nunca se sustituyen directamente en el comando SQL. El punto total de las consultas parametrizadas es que el código es código, los datos son datos, y los dos nunca se cruzan. Esto elimina cualquier posibilidad de ataques de inyección, sin importar la nueva función de idioma, el carácter de escape personalizado o la rareza Unicode con la que deba lidiar.

En el lado del servidor, en lugar de esto:

SELECT * FROM [table] WHERE ID=1234;

Es más como si ejecutara un código como este:

DECLARE @ID int;
SET @ID = LoadParameterValueFromClientQueryObject("ID");
SELECT * FROM [table] WHERE ID= @ID;

Siempre se trata de una variable, donde el valor de la variable se mantiene alejado del compilador / optimizador del lenguaje SQL hasta que el comando ya esté compilado en un plan de ejecución.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué