Руководство по работе с БД Firebird с использованием библиотеки ADO .Net 2.0

       

Добавление логики управления данными


Мы разобрались как отображать, связывать и редактировать данные. Теперь давайте завершим наш пример и научим приложение записывать сделанные нами изменения обратно в базу данных.

У нас единственным редактируемым полем является описание текущего проекта. Для записи изменений, сделанных в нем, мы воспользуемся методом TableAdapter.Update() для таблицы PROJECT. Добавим элемент Button на нашу форму и в обработчике cсобытия Click напишем следующий код:

private void btnSaveChanges_Click(object sender, EventArgs e) { try { this.pROJECTTableAdapter.Update(this.jobDataSet.PROJECT); MessageBox.Show("Save was successful"); } catch (Exception exception) { MessageBox.Show(exception.Message); } }

Так же неплохо было бы иметь возможность откатить сделанные изменения. Добавим ещё одну кнопку и в обработчике события Click поместим код, который будет отменять все изменения в DataSet, произведенные с момента последнего сохранения:

private void btnUndoChanges_Click(object sender, EventArgs e) { this.jobDataSet.RejectChanges(); //требуется для обновления содержимого TextBox

this.iNTEG36BindingSource.CurrencyManager.Refresh(); }

В процессе написания кода передачи изменений в БД, я столкнулся со следующей проблемой: при редактировании связанных данных через TextBox изменения не передавались в DataSet и метод DataSet.HasChanges() всегда возвращал false. Для решения этой проблемы необходимо в обработчик события TextBox.Validate добавить следующий код:

private void textBox1_Validated(object sender, EventArgs e) { this.iNTEG36BindingSource.EndEdit(); }

Завершенное приложение JobManager доступено в архиве с примерами к статье.



Содержание раздела