如何从表适配器获取正在执行的 SQL 查询
本文关键字:执行 SQL 查询 获取 适配器 | 更新日期: 2023-09-27 18:35:34
可能的重复项:
如何从 SqlCommand-Object 获取生成的 SQL 语句?
我想知道如何检索由表适配器执行的 SQL 查询以进行日志记录。
例如:
输入:
RandomTableAdapter tableAdapter = new RandomTableAdapter();
tableAdapter.Insert("val","val","val","val");
输出:
我想记录的是插入语句,它由表适配器生成,以便执行插入命令。
Insert INTO RandomTable VALUES ('val', 'val', 'val', 'val');
我该怎么做?有人对此有任何建议吗?
您可以使用此解决方法将参数名称替换为其值但这并不好,因为您需要自己管理值格式,而且速度可能很慢
并且您需要在执行插入后获取参数
法典:
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());