Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Разработка приложений баз данных (Visual Studio 2008).docx
Скачиваний:
143
Добавлен:
26.03.2016
Размер:
1.01 Mб
Скачать

Связанная схема объекта DataTable

При создании TableAdapter начальный запрос или сохраненная процедура используются для определения схемы адаптера, связанного сDataTable. Этот начальный запрос или сохраненная процедура выполняются путем вызова основного метода адаптера таблицы Fill, который заполняет связанную с адаптером DataTable. Любые изменения, внесенные в основной запрос адаптера TableAdapter, отражаются в схеме связанной таблицы данных. Например, если удалить столбец из основного запроса, то будет удален столбец из связанной таблицы данных. Если какие-либо дополнительные запросы на TableAdapter используют инструкции SQL, возвращающие столбцы, которых нет в главном запросе, тогда конструктор попытается синхронизировать изменения столбцов между основным и дополнительными запросами.

Команды обновления TableAdapter

Функциональные возможности обновления адаптера таблиц зависят от того, какая информация доступна на основе основного запроса, заданного в мастере адаптера таблиц. Например, адаптеры таблиц, настроенные для выборки значений из нескольких таблиц (join), скалярные значения, представления или результаты статистических функций изначально создаются без возможности отправлять обновления обратно к основной базе данных. Однако можно настроить команды INSERT, UPDATE и DELETE вручную в окне Свойства.

Запросы адаптера таблиц

Рис. 5. Иллюстрация запросов адаптера таблиц

В отличие от стандартных адаптеров данных, адаптеры таблиц могут содержать несколько запросов для заполнения связанных таблиц. Пользователь может определить столько запросов для TableAdapter, сколько требуется для приложения. При этом каждый запрос возвращает данные, которые соответствуют той же схеме, что и связанная таблица данных. Это позволяет загружать данные, которые удовлетворяют различным критериям. Например, если приложение содержит таблицу клиентов, то можно создать запрос, заполняющий таблицу клиентов, чье имя начинается с определенных букв, и другой запрос, отбирающий всех клиентов, расположенных в одном и том же штате. Для заполнения таблицы Customers сведениями о клиентах, расположенных в определенном штате, можно создать запрос FillByState , принимающий параметр для задания штата: SELECT * FROM Customers WHERE State = @State. Запрос выполняется путем вызова метода FillByState и передачей в параметр значения, например, как следующее значение: CustomerTableAdapter.FillByState("WA").

В дополнение к запросам, возвращающим данные из одной и той же схемы, как таблица данных адаптера TableAdapter, можно добавить запросы, возвращающие скалярные (одиночные) значения. Например, созданный запрос, возвращающий число клиентов (SELECT Count(*) From Customers), является допустимым для CustomersTableAdapter, даже если возвращаемые данные не соответствует схеме таблицы.

Свойство ClearBeforeFill

  • По умолчанию при каждом выполнении запроса для заполнения таблицы данных адаптера данные очищаются, и в таблицу загружаются только результаты запроса. Задайте свойству ClearBeforeFillзначение false, если вы хотите добавлять или объединять данные, возвращенные из запроса существующих данных в таблице данных. Независимо от того, хотите ли вы стереть данные, при необходимости нужно явно отправлять обновления обратно к базе данных. Поэтому не забудьте сохранить любые изменения, внесенные в данные таблицы, перед выполнением другого запроса, заполняющего таблицу.