是否可以获取 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";
最佳答案
不:您必须自己遍历参数集合,执行 string.Replace() 以获取等效项。当您必须使用?
时尤其痛苦语法而不是 @parametername
句法。
这样做的原因是从未组装过完整的字符串。参数和发送到服务器并被视为数据,并且永远不会包含在字符串中。
尽管如此,我还是理解你的痛苦。如果它们包含某种 .ComposeSQL()
就好了您可以出于调试目的调用的方法,这可能还会产生编译器警告以帮助避免在生产中使用。
关于ado.net - oledb/ado.net : Get the command's text, 替换了所有参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/178857/