可能重复:
How to get the generated SQL-Statement from a SqlCommand-Object?
我想知道如何检索由表适配器执行的SQL查询以进行日志记录。
例如:
输入:
RandomTableAdapter tableAdapter = new RandomTableAdapter();
tableAdapter.Insert("val","val","val","val");
输出:
我想记录的是insert语句,它由表适配器生成,以便执行insert命令。
Insert INTO RandomTable VALUES ('val', 'val', 'val', 'val');
我该怎么做?有人对此有任何建议吗?
答案 0 :(得分:1)
您可以使用此变通方法将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());