Guldbrand Ответов: 1

объект DataAdapter.заполнение удаленных данных в базе данных остается в наборе данных


Привет ребята

Я погуглил это и, похоже, не нашел ответа.

Моя проблема в том, что я использую DataAdapter.заполнение и обновление для синхронизации между набором данных на ПК и базой данных.

Я могу изменить некоторые данные в базе данных через phpmyadmin, и он обновляет данные в наборе данных.

Но если я удаляю строку в базе данных, эта строка остается в наборе данных.
Что я упускаю?

Я заполняю набор данных следующим образом
partAdapter = new MySqlDataAdapter("Select * from part", connection);
partBuilder = new MySqlCommandBuilder(partAdapter);
partAdapter.DeleteCommand = partBuilder.GetDeleteCommand();
partAdapter.UpdateCommand = partBuilder.GetUpdateCommand();
partAdapter.InsertCommand = partBuilder.GetInsertCommand();
partAdapter.FillSchema(partTable, SchemaType.Source);
partAdapter.Fill(partTable);

partTable.Merge(dataSet.Tables["partTable"]);


И каждые 30 секунд я обновляю и заполняю снова вот так

partAdapter.Update(dataSet.Tables["partTable"]);
partAdapter.Fill(dataSet.Tables["partTable"]);


Надеюсь, что кто-то сможет помочь

Что я уже пробовал:

То, что я пробовал-ну, я погуглил, чтобы посмотреть, смогу ли я найти решение - но безуспешно!

1 Ответов

Рейтинг:
1

Tabish Mateen

Я думаю, что ваша проблема заключается в том, что datatable содержит удаленную строку. Попробуйте удалить строку из DataTable, а затем заполнить ее снова.


Guldbrand

Ну да, но я хочу, чтобы dataAdapter удалил строку в dataTable, когда она будет удалена из базы данных.

Tabish Mateen

Будет полезно, если вы создадите демо-проект и поделитесь им со мной .

Для вашей справки: адаптер.Обновленная таблица.Выберите (null, null, DataViewRowState.Удаленный));

Guldbrand

Я мог бы это сделать, но только так, чтобы мы говорили на одном языке:

Должно быть, это адаптер.заполнить, что не работает!?

Я удаляю строку в базе данных через phpmyadmin, и она не удаляется из набора данных!


Guldbrand

Я решил эту проблему, очистив набор данных перед заполнением, но действительно ли это необходимо?

Tabish Mateen

Ну, когда вы используете dt.Clear() вы очищаете весь datatable и структуру. Чтобы сохранить структуру и класс четкие данные можно использовать ДТ.строк.ясно().

Также проверьте свойство "ClearBeforeFill".