有没有办法将SqlCommand对象转换成实际的T-SQL命令,发送到SQL Server?
发布于 2010-06-03 17:00:00
我不这么认为,参数和查询文本被分别发送到SQL Server,SQL Server相应地处理它们。您可以从SqlCommand.CommandText获取查询,参数存储在SqlCommand.Parameters集合中。您必须进行一些字符串操作才能将其转换为查询,但即使这样,您也可以获得与发送到SQL Server的内容不同的内容。
这个问题也有一些有趣的信息:How does SqlCommand sanitize parameters?
发布于 2010-06-03 17:14:55
我实际上在考虑类似这样的扩展(不能很好地工作,只是想法):
public static string ToQuery(this SqlCommand command)
{
StringBuilder sb = new StringBuilder();
sb.Append("exec ");
sb.Append(command.CommandText);
List<string> parameters = new List<string>();
for (int i=0; i<command.Parameters.Count;i++)
{
if (command.Parameters[i].Direction != ParameterDirection.ReturnValue)
{
parameters.Add(string.Format(" {0}={1}", command.Parameters[i].ParameterName, command.Parameters[i].Value));
}
}
if (parameters.Count > 0) sb.Append(string.Join(",", parameters.ToArray()));
return sb.ToString();
}https://stackoverflow.com/questions/2964459
复制相似问题