【问题标题】:oledb/ado.net: Get the command's text, with all parameters replacedoledb/ado.net:获取命令的文本,替换所有参数
【发布时间】:2008-10-07 14:59:16
【问题描述】:

是否可以获取 OleDbCommand 的文本并将所有参数替换为它们的值?例如。在下面的代码中,我正在寻找一种获取查询文本的方法

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

在我完成分配参数之后。

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

【问题讨论】:

    标签: ado.net parameters oledb


    【解决方案1】:

    否:您必须自己遍历参数集合,执行 string.Replace() 以获得等效项。当您必须使用? 语法而不是@parametername 语法时,尤其痛苦。

    原因是完整的字符串从不组装。参数并被发送到服务器并被视为数据,并且永远不会包含在字符串中。

    同样,我理解你的痛苦。如果它们包含某种.ComposeSQL() 方法会很好,您可以调用进行调试,这可能还会产生编译器警告以帮助避免在生产中使用。

    【讨论】:

      【解决方案2】:

      如果您只需要查看执行了什么查询而不需要以编程方式处理它,您可以使用 SQL Profiler。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-06
        相关资源
        最近更新 更多