2010-06-03 29 views
0

有什麼辦法如何將SqlCommand對象轉換爲實際的T-SQL命令,它發送到SQL Server?SqlCommand到T-SQL

+0

重複數據刪除:HTTP:// stackoverflow.com/questions/2611446/what-sql-is-being-sent-from-a-sqlcommand-object – tzaman 2010-06-03 08:57:51

回答

0

我不這麼認爲,參數和查詢文本分別發送到SQL Server,並且SQL Server會相應地處理它們。您可以從SqlCommand.CommandText獲取查詢,並且參數存儲在SqlCommand.Parameters集合中。您必須執行一些字符串操作才能將其轉換爲查詢,但即使如此,您還是可以獲得與發送給SQL Server的內容不同的內容。

這個問題有關於這一些有趣的信息,太:How does SqlCommand sanitize parameters?

0

其實我在想是這樣的擴展名(不工作好,只是想法):

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