【发布时间】:2010-06-03 08:54:34
【问题描述】:
有什么方法可以将 SqlCommand 对象转换为实际的 T-SQL 命令,然后发送到 SQL Server?
【问题讨论】:
标签: c#
有什么方法可以将 SqlCommand 对象转换为实际的 T-SQL 命令,然后发送到 SQL Server?
【问题讨论】:
标签: c#
我不这么认为,params 和 query text 是分开发送到 SQL Server 的,SQL Server 会做相应的处理。您可以从 SqlCommand.CommandText 获取查询,参数存储在 SqlCommand.Parameters 集合中。您必须进行一些字符串操作才能将其转换为查询,但即便如此,您也会得到与发送到 SQL Server 的内容不同的内容。
这个问题也有一些有趣的信息:How does SqlCommand sanitize parameters?
【讨论】:
我实际上是在考虑类似这个扩展的东西(效果不好,只是想法):
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();
}
【讨论】: