【问题标题】:SqlCommand to T-SQLSqlCommand 到 T-SQL
【发布时间】:2010-06-03 08:54:34
【问题描述】:

有什么方法可以将 SqlCommand 对象转换为实际的 T-SQL 命令,然后发送到 SQL Server?

【问题讨论】:

标签: c#


【解决方案1】:

我不这么认为,params 和 query text 是分开发送到 SQL Server 的,SQL Server 会做相应的处理。您可以从 SqlCommand.CommandText 获取查询,参数存储在 SqlCommand.Parameters 集合中。您必须进行一些字符串操作才能将其转换为查询,但即便如此,您也会得到与发送到 SQL Server 的内容不同的内容。

这个问题也有一些有趣的信息:How does SqlCommand sanitize parameters?

【讨论】:

    【解决方案2】:

    我实际上是在考虑类似这个扩展的东西(效果不好,只是想法):

    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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-12
      • 2011-02-02
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多