2017-02-09 21 views
0

У меня возникла проблема с обновлением базы данных с помощью OleDBCommandBuilder и типизированного набора данных. Когда я редактирую свою базу данных с готовой панелью, после обновления я вижу, что изменения происходят в DataGridView. Но эти изменения являются временными, beacause, когда я перезапускаю свои приложения, изменения заменяются обратно исходной информацией из базы данных. Может ли кто-нибудь увидеть проблему с кодом, приведенным ниже?C# Обновление адаптера таблицы не обновляется 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); 
       } 

      } 
     } 

ответ

0

Попробуйте почитайте документацию
https://msdn.microsoft.com/en-us/library/system.data.oledb.oledbdataadapter.update(v=vs.110).aspx
https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.updatecommand(v=vs.110).aspx
Сделать Shure, что вы должны назначить UpdateCommand свойство DataAdapter
Также проверьте, есть ли строки в changes

+0

все еще не работает;/ – DoeUS

+0

Хорошо, давайте figureout why =) – Sergio