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

C# 使用MySqlCommand参数时如何查看命令字符串?,c#,mysql,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 =so

具有如下代码:

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
,在我的例子中)


有什么建议吗?

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

解决方案:

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

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

解决方案:

String commandtext = cmd.CommandText;
foreach (SqlParameter p in cmd.Parameters)
commandtext = commandtext.Replace(p.ParameterName, p.Value.ToString());
据认为,这不能直接做到

答案如下:

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

(有关解决方法,请参见此处的其他答案。特别是。)

根据它,无法直接完成

答案如下:

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


(有关解决方法,请参见此处的其他答案。尤其是。)

请参见本次我使用了代码,它工作得非常好。请参见本次我使用了代码,它工作得非常好:)。你救了我,让我在你以前的版本中指出了这个bug(你在那里设置了
commandtext=“
)。捕捉得很好。这很好,但就像ispiro指出的答案一样,会给你留下不被引用的字符串。为你的帮助干杯,永远不会少:)@Sudhakar tilapudi,在Ubuntu 16.04中,cmd.Parameters.AddWithValue(“@some\u value”,此处的some\u string\u”)不起作用;谢谢。你救了我,让我在你以前的版本中指出了这个bug(你在那里设置了
commandtext=“
)。捕捉得很好。这很好,但就像ispiro指出的答案一样,会给你留下不被引用的字符串。为你的帮助干杯,永远不会少:)@Sudhakar tilapudi,在Ubuntu 16.04中,cmd.Parameters.AddWithValue(“@some\u value”,此处的some\u string\u”)不起作用;谢谢。就在你希望事情简单明了的时候。。。无聊的。。。在提供的链接中回答得很好。为此干杯。就在你希望事情简单明了的时候。。。无聊的。。。在提供的链接中回答得很好。为此干杯。