使用MySqlCommand参数时如何查看命令字符串?

时间:2013-11-25 23:22:52

标签: c# mysql

代码如下:

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)。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

根据this answer,不能直接完成。

答案:

  

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

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

答案 1 :(得分:1)

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

<强>解决方案:

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