【问题标题】:How to get the executing SQL query from a table adapter? [duplicate]如何从表适配器获取正在执行的 SQL 查询? [复制]
【发布时间】:2012-05-28 08:48:55
【问题描述】:

可能重复:
How to get the generated SQL-Statement from a SqlCommand-Object?

我想知道如何检索表适配器为记录目的而执行的 SQL 查询。

例如:

输入:

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

输出:

我要记录的是插入语句,它是由表适配器生成的,用于执行插入命令。

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

我该怎么做?有人对此有什么建议吗?

【问题讨论】:

    标签: c# sql tableadapter


    【解决方案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());
    

    【讨论】:

    • 谢谢,它给了我一个起点。我会看看我能用你提供的样本做什么。非常感谢。
    猜你喜欢
    • 2014-05-11
    • 2011-05-28
    • 2017-06-05
    • 2017-02-16
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多