4

可能重复:
如何从 SqlCommand-Object 获取生成的 SQL 语句?

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

例如:

输入:

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

输出:

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

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

我怎样才能做到这一点?有人对此有什么建议吗?

4

1 回答 1

0

您可以使用此解决方法将 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());
于 2012-05-28T10:34:16.793 回答