0

我试图弄清楚是否需要额外的逻辑来避免对我的 SQL 数据库的无用调用,或者是否SqlDataAdapter.Update()会做正确的事情。如果我有这个代码:

SqlConnection sqlconn = new SqlConnection(connectionString);
sqlconn.Open();
SqlDataAdapter da = new SqlDataAdapter(selectString, sqlconn);
SqlDataTable table = new SqlDataTable();
da.Fill(table);
new SqlCommandBuilder(da);
table.Rows[0][columnName] = 5; // Existing value is already 5
da.Update(table);

仍然会为该行.Update()调用 SQL UPDATE,还是不会,因为该行的值没有真正改变?

4

1 回答 1

0

它将调用 SQL 中的更新语句,因为更改其中的值并再次将其DataSet设置为相同,将修改RowState属性。

DataAdapter.Update - MSDN

当应用程序调用 Update 方法时,DataAdapter 会检查 RowState 属性,并根据 DataSet 中配置的索引的顺序为每一行迭代地执行所需的 INSERT、UPDATE 或 DELETE 语句。

您也可以使用 SQL Profiler 进行确认。

于 2013-10-10T14:17:25.967 回答