Как сохранить изменения в базу данных?

Приветствую всех! Часто на просторах интернета встречал вопрос, как сохранить изменения в базе данных. Тут все легко вызываем на адаптере метод Update(); и передаем ему в качестве параметров таблицу либо, DataSet. Выглядеть это может следующим образом:

Однако ситуация меняется кардинально если у нас DataGridView связан с БД и допустим с TextBox в котором мы производим изменения, для последующего сохранения данных. Связка происходит по средствам BindingSource.

Рассмотрим простой пример привязки данных DataGridView к БД и TextBox c БД для изменения информации и сохранения ее.

Как видите я разместил на форме Button, все остальные компоненты будут добавлены позже. Так же нам необходимо создать БД в проекте, в которой создадим таблицу, а в ней две колонки ID и Имя. Внесем несколько записей в БД. У меня получилось следующее:

Создание таблицы Table и колонок ID, Имя
Заполняем данными таблицу

После создания и внесение данных обновляем, сохраняем все. На этом этапе мы имеет БД с информацией, и приложение с компонентами на форме. Следующим этапом будет привязка компонента DataGridView к БД.

Для этого мы открываем в Visual Studio окно «Источники данных» или используем горячие клавиши зажав Shift_Alt+D

Далее у нас откроется мастер настройки источника данных. Повторяем все действия показанные на изображения ниже:

В данных настройках мы выбираем компонент который хотим связать с нашей БД и зажимая кнопкой мыши перетаскиваем его на форму нашего приложения. Для TextBox это будет «Сведения» После проведения все выше перечисленных манипуляций у нас должно получиться следующее.

Теперь выбирая имя в DataGridView у нас выводит информацию в TextBox. В которой мы хотим реализовать возможность редактирования информации. Перейдя к событию мыши Click напишем следующий код:

Стоит так же отметить что у нас с генерировался и дополнительный код, в том числе и в главной форме.

Суть сохранения изменений сводится к тому что надо завершать изменения в BindingSource вызывая метод EndEdit(); а уже после вызывать метод Update(); на адаптере.

В итоге у нас получилось полноценное приложение WinForm написано на C#. Пример демонстрирует то как можно легко создать приложение для работы с базой данных, реализовать привязку БД к DataGridView и TextBox. И возможность сохранят изменения в базе данных.

Обновлено: 04.12.2019 — 10:12

10 комментариев

Оставить комментарий
  1. Привет! Не сохраняет, в чём может быть дело?

    1. Без студии, запустить программу, и произведите сохранения.

  2. Как говорится «сосите лямки от кальсон!»
    Не работает у меня ваша схема, пишет что
    System.InvalidOperationException: «Для обновления требуется действительный UpdateCommand при передаче коллекции DataRow с измененными строками.»

    1. Потому что, вы не совсем понимаете, что делаете, не надо вносить изменения в генерированный код студии.

  3. Ничего не сохраняет и ошибок не выдает. Все сделал как по инструкции.

    1. Справами админа студию запустите, если не помогло то смотрите в код.

    2. Боже, спасибо, помог, а то что я только не менял/добавлял в коде, чтобы получилось

      1. Пожалуйста)

  4. Была такая же проблема. Решение оказалось довольно простым.
    Нужно зайти в «Обозреватель решений», там найти свою базу данных, далее зайти в свойства и в пункте «Копировать в выходной каталог» выбрать «Копировать более позднюю версию»

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.