2013-10-10 2 views
0

Я пытаюсь выяснить, нужна ли мне дополнительная логика, чтобы избежать бесполезного вызова моего SQL-db, или если SqlDataAdapter.Update() поступит правильно. Если у меня есть этот код:Будет ли вызывать 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 для этой строки, или будет это не так, потому что никакие значения для ряда действительно изменилось?

ответ

0

Это будет вызывать оператор обновления в SQL, так как изменение значения в DataSet и снова установить его на то же самое, изменитRowState свойства.

DataAdapter.Update - MSDN

Когда приложение вызывает метод Update, то DataAdapter исследует свойство RowState, и выполняет требуемую INSERT, UPDATE, или DELETE заявления итерационно для каждой строки, на основе порядок индексов, настроенных в DataSet.

Вы также можете подтвердить это с помощью SQL Profiler.

Смежные вопросы