获取执行查询的输出精简程序

时间:2019-02-05 16:06:08

标签: parameters output dapper

我有在错误异常中使用dapper访问的sqlserver中执行查询的代码,我想使用指定参数执行查询:

StringBuilder sql = new StringBuilder();
sql.AppendLine(" SELECT " + campoChave + " AS CODIGO, ");
sql.AppendLine("        " + campoSelecao + " AS DESCRICAO ");
sql.AppendLine("   FROM " + tabela);
sql.AppendLine("   where codigoidioma = @codigoIdioma");
sql.AppendLine("  ORDER BY " + campoSelecao);

IEnumerable entities2 = conexao.Query<ComboBoxGenerico>(sql.ToString(), new { codigoIdioma = 1 });

此代码有错误,我想在使用命令执行dapper之后获取查询

例如:选择睾丸作为codigo .....,其中codigoidioma = 1

@codigoIdioma ---> 1

1 个答案:

答案 0 :(得分:0)

执行命令后的查询几乎总是...完全是您传入的内容。Dapper不会 replace 参数标记-这将是一个SQL注入孔。即使使用监视SQL流量的工具(迷你配置文件管理器,SQL Server配置文件管理器等):显示的命令也将包含参数令牌,并分别发送参数。

Mini-profiler 通过在显示之前在命令前添加看起来像参数的declare语句来欺骗,因此您可以在SSMS中运行它-这将为您提供像这样:

declare @codigoidioma int = 1;
select teste as codigo ..... where codigoidioma = @codigoidioma

但是请注意,即使在这里,它仍然保持参数化(ish)。

对于精巧的 ,“ em它将成为您传入的内容”一般规则有一些 例外,涉及某些特定情况,例如{ {1}}(用于in @foo的{​​{1}}之类的地方),它将在其中生成适当的参数扩展,但仍将对其进行参数化