如何从表适配器获取执行SQL查询?

可能重复:
如何从SqlCommand-Object获取生成的SQL语句?

我想知道如何检索由表适配器执行的SQL查询以进行日志记录。

例如:

输入:

RandomTableAdapter tableAdapter = new RandomTableAdapter(); tableAdapter.Insert("val","val","val","val"); 

输出:

我想记录的是insert语句,它由表适配器生成,以便执行insert命令。

 Insert INTO RandomTable VALUES ('val', 'val', 'val', 'val'); 

我怎样才能做到这一点? 有人对此有任何建议吗?

您可以使用此变通方法将ParameterName替换为其值,但这并不好,因为您需要自己管理值格式,并且它可能很慢
并且在执行Insert之后需要获取参数

码:

 var usersTableAdapter = new testDataSetTableAdapters.usersTableAdapter(); usersTableAdapter.Insert(4, "home", "origin", "email@host.com", "realname", "spec", 1, "username", "usernick", "whereform"); var cmd = usersTableAdapter.Adapter.InsertCommand; var text = cmd.CommandText; var sb = new StringBuilder(text); foreach (SqlParameter cmdParam in cmd.Parameters) { if (cmdParam.Value is string) sb.Replace(cmdParam.ParameterName, string.Format("'{0}'", cmdParam.Value)); else sb.Replace(cmdParam.ParameterName, cmdParam.Value.ToString()); } Console.WriteLine(sb.ToString()); 
Interesting Posts