2017-02-09 6 views
0

Je suis confronté à un problème de mise à jour de DB avec OleDBCommandBuilder et de jeu de données typé. Lorsque je modifie ma base de données avec le panneau préparé, après la mise à jour, les modifications ont lieu dans DataGridView. Mais ces changements sont temporaires, car lorsque je redémarre, les modifications de l'application sont remplacées par les informations d'origine de la base de données. Quelqu'un peut-il voir un problème avec le code ci-dessous?C# La mise à jour de l'adaptateur de table ne met pas à jour le DB

var row = this.dataGridViewProducts.SelectedRows[0]; 
     DataRowView rowView = row.DataBoundItem as DataRowView; 
     ProductsRow productRow = rowView.Row as ProductsRow; 
     if (row != null) 
     { 
      ProductForm formEdit = new ProductForm(ref productRow); 
      bool success = false; 
      while (success == false) 
      { 
       try 
       { 
        formEdit.ShowDialog(); 
        if (this.productsTableAdapter1.Connection.State != ConnectionState.Open) 
         this.productsTableAdapter1.Connection.Open(); 
        var changes = nwindDataSet1.Products.GetChanges(); 
        if (changes != null) 
        { 
         OleDbCommandBuilder builder = new OleDbCommandBuilder(productsTableAdapter1.Adapter); 
         productsTableAdapter1.Adapter.UpdateCommand = builder.GetUpdateCommand(); 
         productsTableAdapter1.Adapter.Update(changes); 
         nwindDataSet1.Products.AcceptChanges(); 
        } 
        success = true; 
       } 
       catch (Exception error) 
       { 
        MessageBox.Show(error.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
       } 

      } 
     } 

Répondre