当使用MySqlCommand参数时,如何查看命令字符串?
当使用MySqlCommand参数时,如何查看命令字符串?
代码如下所示:
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参数时查看命令字符串,但不知道如何实现。解决方法是使用MySqlCommand对象的CommandText属性来获取实际的命令字符串,然后使用foreach循环遍历Parameters参数,并用参数的值替换命令字符串中的参数名称。
具体的解决方法如下:
String commandtext = cmd.CommandText; foreach (SqlParameter p in cmd.Parameters) commandtext = commandtext.Replace(p.ParameterName, p.Value.ToString());
这样就可以得到替换参数后的命令字符串。这个方法在大多数情况下都可以正常工作,但是像ispiro指出的答案一样,会导致字符串没有加引号。不过还是感谢提供帮助,这个方法已经足够好用了。
然而,在Ubuntu 16.04中使用cmd.Parameters.AddWithValue("_value", some_string_here)时,这个方法并不起作用。谢谢你的建议。