Оновлення виконується на основі по рядках. Для кожної вставленої, змінені і вилучені рядки Update метод визначає тип зміни, яке було виконано на ньому (вставки, оновлення або видалення). Залежно від типу змін Insert. Update, або Delete Шаблон команди виконується для поширення зміненої рядки в джерело даних. Коли додаток викликає Update метод DataAdapter перевіряє RowState властивість і виконує необхідні інструкції INSERT, UPDATE або DELETE итеративно для кожного рядка, грунтуючись на порядку індексів, налаштованому в DataSet. Наприклад Update може виконати інструкцію DELETE, за яким слід інструкція INSERT, а потім ще одну інструкцію DELETE, через порядок рядків у DataTable.
Слід зазначити, що ці інструкції виконуються не як пакетний процес. Кожен рядок оновлюється окремо. Додаток може викликати GetChanges метод у випадках, коли необхідно управляти послідовністю типів інструкцій (наприклад, вставити до поновлення). Для отримання додаткової інформації див. Оновлення джерел даних за допомогою об'єктів DataAdapter.
Якщо інструкції INSERT, UPDATE або DELETE не вказані, Update метод створює виняток. Однак можна створити SqlCommandBuilder або OleDbCommandBuilder для автоматичного створення інструкцій SQL для окремих оновлень, якщо задати SelectCommand Властивості постачальника даних .NET Framework. Потім створюються всі додаткові інструкції SQL, які не задаються по CommandBuilder. Ця логіка створення вимагає відомості про ключове стовпці повинні бути присутніми в DataSet. Додаткові відомості див. У розділі Створення команд за допомогою об'єкта CommandBuilders.
Update Метод витягує рядки з таблиці, наведеної в першому зіставленні перед оновленням. Update Потім оновлює рядок, використовуючи значення UpdatedRowSource Властивості. Всі повернуті додаткові рядки ігноруються.
Після завантаження даних назад в DataSet. OnRowUpdated події, дозволяючи користувачеві перевірити узгоджену DataSet рядку і всі вихідні параметри, повернуті командою. Після успішного оновлення рядка приймаються зміни цього рядка.
При використанні Update. порядок виконання виглядає так:
Значення в DataRow переміщаються в значення параметрів.
Якщо команда має значення FirstReturnedRecord. перший повернутий результат поміщається в DataRow.
Якщо є вихідні параметри, вони поміщаються в DataRow.
Кожна команда, пов'язана з DataAdapter зазвичай має колекцію параметрів, пов'язаних з ним. Параметри зіставляються з поточним рядком за допомогою SourceColumn і SourceVersion властивостей постачальника даних запустивши Parameter класу. SourceColumn посилається на DataTable стовпець, DataAdapter посилання для отримання значень параметра для поточного рядка.
SourceColumn посилається на ім'я несопоставленние стовпець, перш ніж були застосовані зіставлення таблиць. Якщо SourceColumn посилається на неіснуючий стовпець, їхні дії залежать від одного з наступних MissingMappingAction значення.
SourceColumn Властивість також використовується для зіставлення значень вихідних значень або вхідних / вихідних параметрів назад в DataSet. Виняток створюється в тому випадку, якщо він посилається на неіснуючий стовпець.
SourceVersion Властивості постачальника даних .NET Parameter клас визначає, чи слід використовувати версію вихідні, поточного або запропоновані значення стовпця. Ця можливість часто використовується для включення вихідних значень в реченні WHERE інструкції UPDATE для перевірки порушень оптимістичного паралелізму.
Виклик AcceptChanges методу або AcceptChanges метод буде внести всі зміни в DataSet або DataTable. Якщо будь-який з цих методів викликаються перед Update викликається метод, зміни не будуть зафіксовані при Update метод викликається, якщо не були внесені зміни з моменту AcceptChanges або AcceptChanges був викликаний.
У разі помилки при оновленні рядка створюється виняток, і завершується виконання оновлення. Щоб продовжити операцію поновлення без появи виключення при виявленні помилки, встановіть ContinueUpdateOnError Властивості true перед викликом методу Update. Також можна відповісти на помилки на порядкової всередині RowUpdated події об'єкта DataAdapter. Щоб продовжити операцію поновлення без генерації виключення в RowUpdated набір подій, Status властивість RowUpdatedEventArgs для Continue.
Для кожного стовпця, який поширюється з джерелом даних на Update. слід додати параметр InsertCommand. UpdateCommand. або DeleteCommand. SourceColumn Властивості параметра має бути присвоєно ім'я стовпця. Цей параметр вказує, що значення параметра встановлюється не вручну, але береться з конкретного стовпця в даний час в оброблюваної в рядку.