如何从表适配器获取执行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());