2017-01-25 4 views
1

Поэтому работа над проектом в настоящее время и застрял на этой проблемеC# Ошибка при обновлении

Когда я пытаюсь обновить элемент в базе данных SQL я получаю сообщение об ошибке и вид в тупик, как к ошибке.

if (MessageBox.Show("Do You Wish To Update Field Details?", "Update Field Details", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == System.Windows.Forms.DialogResult.Yes) 
{ 
    try 
    { 
     int fieldID = int.Parse(cmbFieldInfo.SelectedValue.ToString()); 

     drFields = dsFarmCosts.Tables["fieldDetails"].Rows.Find(fieldID); 

     drFields.BeginEdit(); 
     drFields["fieldName"] = add.FieldName; 
     drFields["fieldSize"] = add.FieldSize; 
     drFields["FieldLocation"] = add.FieldLocation; 
     drFields["fieldHistory"] = add.FieldHistory; 
     drFields.EndEdit(); 
     daFarmCosts.Update(dsFarmCosts, "fieldDetails"); 

     Reset(); 

     MessageBox.Show("Field Details Updated"); 

    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.ToString()); 
    } 
} 

Ошибка

System.InvalidOperationException: Обновление требует действительного UpdateCommand, когда прошло собрание DataRow с измененными строками.

на System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors (RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo [] batchCommands, Int32 commandCount)

на System.Data.Common.DbDataAdapter.UpdatedRowStatus (RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo [ ] batchCommands, Int32 commandCount)

на System.Data.Common.DbDataAdapter.Update (DataRow [] DataRows, DataTableMapping tableMapping)

в System.Data.Common.DbDataAdapter.UpdateFromDataTable (DataTable Datatable, DataTableMapping tableMapping)

в System.Data.Common.DbDataAdapter.Update (DataSet DataSet, String srcTable)

в Farm_Costs.field_screens .fieldEditScreen.btnSubmit_Click (Object отправителя, EventArgs е) в H: \ Школа \ Маги \ Project \ Program \ Farm Затраты \ Farm Затраты \ экраны поля \ fieldEditScreen.cs: линия 114

совет Эми или советы ?

+4

Ну, текст исключения не требует пояснений. Вы настроили «UpdateCommand» вашего адаптера данных daFarmCosts? –

ответ

1

Вам необходимо иметь UpdateCommand на daFarmCosts DataAdapter. Что-то похожее на следующий код:

... 
daFarmCosts .Fill(); 
dadaFarmCosts UpdateCommand = new SqlCommandBuilder(daFarmCosts).GetUpdateCommand(); 
... 
daFarmCosts .Update(); 
+0

Спасибо, что отлично сработали. Предположим, что удаление будет аналогичным тогда? – Andy

+0

Если вы заполнили DataSet, вы можете удалить строки в DataSet, а затем обновить DataAdapter с помощью DataSet. Таким образом, строки будут удалены. –

+0

Спасибо, что сработали для меня отлично. Оценка – Andy

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