【问题标题】:How can I see the command string when using MySqlCommand parameters?使用 MySqlCommand 参数时如何查看命令字符串?
【发布时间】:2013-11-25 23:22:51
【问题描述】:

代码如下:

MySqlCommand cmd = new MySqlCommand(
    "SELECT * FROM DB_name_here WHERE some_field =@some_value;"
);

cmd.Parameters.AddWithValue("@some_value", some_string_here);

我可以将它作为一个简单的字符串取回用于调试目的吗,上面写着:

SELECT * FROM DB_name_here WHERE some_field =some_string_here;

明显的 cmd.ToString() 立即让我失望了,返回了 MySql.Data.MySqlClient.MySqlCommand
cmd.CommandText 将返回带有参数的字符串(在我的情况下为@some_value)。

有什么建议吗?

【问题讨论】:

  • 看到这个question 以前我用过这个代码,效果很好

标签: c# mysql


【解决方案1】:

根据this answer不能直接做。

来自答案:

在任何时候都不会生成完整的 SQL 字符串。

(有关解决方法,请参见那里的其他答案。尤其是https://stackoverflow.com/a/265261/939213。)

【讨论】:

  • 就在您期望某些事情简单明了的时候……嗯……在提供的链接中给出了很好的答案。为此干杯。
【解决方案2】:

您可以使用MySqlCommand 对象的CommandText 属性来获取实际的命令字符串。 对于参数,您可以遍历Parameters 并替换为替换参数参数Value

解决方案:

String commandtext = cmd.CommandText;
foreach (SqlParameter p in cmd.Parameters)
commandtext = commandtext.Replace(p.ParameterName, p.Value.ToString());

【讨论】:

  • :) 。你救了我指出你以前版本中的错误(你在哪里设置 commandtext = "" 。很好的捕捉。这工作足够好,但就像 ispiro 指出的答案一样,会给你留下没有引用的字符串。为帮助而欢呼永远不会少:)
  • @Sudhakar Tillapudi,这在 Ubuntu 16.04 中不起作用 cmd.Parameters.AddWithValue("@some_value", some_string_here);谢谢。
猜你喜欢
  • 2011-06-22
  • 1970-01-01
  • 2020-05-14
  • 2018-07-21
  • 1970-01-01
  • 1970-01-01
  • 2022-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多