如何获取用于更新DataSet的t-sql语句

时间:2010-05-21 14:34:34

标签: c# sql dataset

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

当我使用类似这样的代码将数据集更新到数据库时,是否有办法获取此数据集将在sql服务器上执行的实际t-sql查询:

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

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

3 个答案:

答案 0 :(得分:1)

您可以订阅SqlDataAdapter的{​​{3}}和RowUpdating个事件。他们会告诉你即将执行的SqlCommand或刚刚执行的{{1}}。

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

答案 1 :(得分:0)

询问SqlDataAdapter的SqlCommand对象

答案 2 :(得分:0)

您可以围绕System.Data.SqlClient提供程序构建一个包装器(例如,在配置文件中注册的提供程序为... providerName="System.Data.SqlClient“)。基本上是一个拦截代理你可以访问通过提供商传递的所有信息,并且可以虹吸您需要的内容,拦截,修改,聚合和/或丰富它。这有点先进但是打开了获取一系列信息的大门插入/更换/移除作为单独的关注层。