C# 如何从表适配器获取正在执行的SQL查询?

C# 如何从表适配器获取正在执行的SQL查询?,c#,sql,tableadapter,C#,Sql,Tableadapter,可能重复: 我想知道如何检索表适配器出于日志目的执行的SQL查询 例如: 输入: RandomTableAdapter tableAdapter = new RandomTableAdapter(); tableAdapter.Insert("val","val","val","val"); 输出: 我想记录的是insert语句,它是由表适配器生成的,以便执行insert命令 Insert INTO RandomTable VALUES ('val', 'val', 'val', 'val'

可能重复:

我想知道如何检索表适配器出于日志目的执行的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());