【问题标题】:Howt o get the t-sql statements being used to Update a DataSet如何获取用于更新数据集的 t-sql 语句
【发布时间】:2011-02-22 09:40:52
【问题描述】:

我有一个包含一个表的 c# DataSet 对象,并在其中放入了一些数据,并且我对该数据集进行了一些更改(通过代码)。

当我使用如下代码将数据集更新到数据库时,有没有办法获取该数据集将在 sql 服务器上执行的实际 t-sql 查询:

var dataAdapter = new SqlDataAdapter(cmdText, connection);
var affected = dataAdapter.Update(updatedDataSet);

我想知道这个数据集将向数据库触发什么查询,以便我可以将这些更改记录到我的 c# 程序中的日志文件中。

【问题讨论】:

    标签: c# sql dataset


    【解决方案1】:

    询问SQLDataAdapter

    的SQLCommand对象

    【讨论】:

    【解决方案2】:

    您可以订阅SqlDataAdapterRowUpdatingRowUpdated 事件。他们会告诉你即将执行或刚刚执行的SqlCommand

    您可以通过设置随事件提供的SqlRowUpdatingEventArgsStatus 属性来影响当前和将来的更新行。它的类型为UpdateStatus,因此您可以告诉它跳过当前行或所有未来行。

    【讨论】:

    • 好的,下一个问题,但是当我对数据适配器执行 .update 时,如何防止查询实际在数据库上执行?
    【解决方案3】:

    您可以围绕 System.Data.SqlClient Provider 构建一个包装器(例如,在配置文件中注册为 ... providerName="System.Data.SqlClient")的提供程序。本质上是一个您可以访问的拦截代理通过提供者传递的所有信息,并且可以抽取您需要的内容,拦截,修改,聚合和/或丰富它。这有点高级,但打开了捕获整个信息范围的大门,并且可以插入/替换/removed 作为一个单独的关注层。

    【讨论】:

      猜你喜欢
      • 2021-12-01
      • 2022-01-26
      • 2013-01-26
      • 1970-01-01
      • 2015-06-04
      • 1970-01-01
      • 2020-08-28
      • 2018-02-28
      相关资源
      最近更新 更多