代码如下:
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
)。
有什么建议吗?
答案 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());