2010-06-03 3 views
0

Existe-t-il un moyen de convertir l'objet SqlCommand en une commande T-SQL réelle, qui est envoyée au serveur SQL?SqlCommand to T-SQL

+0

duper: http: // stackoverflow.com/questions/2611446/what-sql-is-being-sent-from-a-sqlcommand-object – tzaman

Répondre

0

Je ne pense pas, les paramètres et le texte de requête sont envoyés séparément à SQL Server et SQL Server les traite en conséquence. Vous pouvez obtenir la requête à partir de SqlCommand.CommandText et les paramètres sont stockés dans la collection SqlCommand.Parameters. Vous devez effectuer une manipulation de chaîne pour la transformer en requête, mais même dans ce cas, vous avez quelque chose de différent de ce qui est envoyé à SQL Server.

Cette question a des informations intéressantes à ce sujet, aussi: How does SqlCommand sanitize parameters?

0

Je pensais en fait quelque chose comme cette extension (ne fonctionne pas bien, idée juste):

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