Как я могу получать уведомления в C # WinForms о внешних обновлениях базы данных MS Access? - PullRequest
2 голосов
/ 26 сентября 2010

У меня есть DataGridView, который отображает данные из базы данных MS Access. Я использую DataSet с TableAdapter и BindingSource, чтобы связать данные с DataGridView:

        tableAdapter = new AccountsTableAdapter();

        dataTable = new Accounts.AccountsDataTable();
        tableAdapter.Fill(dataTable);

        tableBindingSource = new BindingSource();
        tableBindingSource.DataSource = dataTable;

        dataGridView1.DataSource = tableBindingSource;

Я хочу знать, как я могу обнаружить или получить уведомление, когда таблица базы данных изменяется из-за пределов моего приложения - обновления строк, вставки, удаления, выполненные в базе данных из интерфейса Access или из другого приложения.

Кроме того, после этого предполагаемого уведомления, как я могу обновить мой DataSet так, чтобы обновлялись только затронутые строки -> получать только новые вставленные строки, значения измененных полей и индексы удаленных.

Итак, в основном я пытаюсь получить синхронизацию таблицы базы данных с DataGridView. Мне уже удалось сохранить в базе данных строки, которые я изменяю или вставляю в DataGridView, теперь было бы неплохо иметь возможность выполнить обратную сторону этой базы данных - привязку представления.

1 Ответ

3 голосов
/ 26 сентября 2010

Единственный способ, которым я знаю, это опрос базы данных. Если данные имеют поле LastModified, вы можете отправлять запросы в базу данных для получения обновленных строк, а затем объединять результаты в свой DataSet.

Например, допустим, вы заполняете форму из sql "SELECT * FROM Contact". Затем каждую минуту или около того запускайте запрос «SELECT * FROM Contact WHERE LastModified> @LastFetched», где @LastFetched - время последнего обновления. Возможно, вы захотите получить значение @LastFetched из базы данных, поскольку клиентский компьютер и сервер базы данных могут не синхронизироваться по времени достаточно близко для правильной работы.

Тогда вам просто нужно обновить DataSet с помощью обновлений. Если форма связана правильно, она должна автоматически обновляться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...