c# 如何查看替换参数后的sql语句

List<int> kinds = new List<int>();
        list.ForEach(x => kinds.Add(x.ID));
        string kindStr = ListToStr<int>(kinds, ",", "''");

        string sql = @"select * from 
                    (select row_number() over(partition by c_kind_num order by n_order desc, d_list_date desc, ID desc) as rownum, id, c_kind_num, c_info_title, c_picurl1, g_id, '' AS link
                        from B_INFOS
                        where n_is_active=1 and c_kind_num in (@kind)
                    ) as T
                    where T.rownum >= 1";
        SqlParameter[] paras =
        {
            new SqlParameter("@kind", kindStr)
        };
        DataTable dt = DbHelperSQL.Query(sql, paras).Tables[0];

测试了@Victor的方法,并不行:
图片描述

阅读 4.9k
3 个回答

最简单的方法就是 打开Sql Server Profiler 连接数据库,新建监控,执行后监控中都是有记录的,找到相应的执行记录即可。
如果DbHelperSql封装的是Ado.net的话,也是有方法的,但是需要用到ETW,配置上稍微复杂。
如果使用的是其他的ORM的话,例如Dapper、EF之类的,都有对应的配置参数,查看相应的文档容易找到。

断点设置在这里就可以看到了

clipboard.png

——打断点在sql的位置

——后台运行调试

——选中你的sql右键 添加监视 就能查看替换参数后的sql了

——你注意你这段 sql 最前面的 DECLARE @TempTable Table

——这是新声明的表、这段sql相当于一个存储过程、是看不了变量的

clipboard.png