2013-10-10 3 views
0

J'essaie de comprendre si j'ai besoin de logique supplémentaire pour éviter un appel inutile à ma base de données SQL, ou si SqlDataAdapter.Update() fera le bon choix. Si j'ai ce code:Est-ce que UPDATE sera appelé si je "change" une valeur de colonne à ce qu'elle est déjà?

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); 

Est-ce que .Update() appellent encore UPDATE de SQL pour cette ligne, ou sera-ce pas, car aucune valeur pour la ligne vraiment changé?

Répondre

0

Il appellera la déclaration de mise à jour dans SQL, car la modification d'une valeur DataSet et la mise à même de nouveau, modifiera la propriété RowState.

DataAdapter.Update - MSDN

Lorsqu'une application appelle la méthode de mise à jour, la DataAdapter examine la propriété RowState, et exécute les INSERT requis, UPDATE ou DELETE itérativement pour chaque ligne, en fonction de la l'ordre des index configurés dans le DataSet.

Vous pouvez également le confirmer à l'aide de SQL Profiler.

Questions connexes