
- •Задания для самостоятельной работы
- •Тема 1. Разработка клиентского приложения в среде ado.Net
- •Тема 2. Параллельное выполнение транзакций
- •Тема 3. Использование olap средств (дополнительно)
- •Приложение. Построение клиентского приложения в среде ado.Net
- •Организация интерфейса
- •Аутентификация пользователя
- •Вариант шифрования пароля
- •Выполнение хранимых процедур Подготовка
- •Подготовка соединения
- •Подготовка команды
- •Подготовка параметров
- •Выполнение команды select
- •Выполнение команды select count(*)
- •Выполнение других команд
- •Использование объекта типа DataSet
- •Создание фрагмента базы данных
- •Связывание таблиц с оконными формами
- •Именование объектов
- •Обмен данными с базой данных
- •Редактирование схемы
Связывание таблиц с оконными формами
Каждая выбранная из базы данных таблица должна быть связана со своим полем типа DataGrid, в котором будет отображаться содержимое таблицы.
Для связывания таблицы с полем необходимо выполнить следующие действия:
1. Перетащить на оконную форму объект DataGridView из панели ToolBox. На окне, вместе с объектом DataGridView, появится дополнительное поле Data Grid View Tasks, которое пока не используется. Его следует погасить, щелкнув мышью в любой позиции окна.
2. Из окна Data Sources следует выбрать требуемую таблицу и перетащить ее на поле DataGridView. При этом в проекте сразу создаются объекты DataSet, TableAdapter и BindingSource.
Для каждой таблицы создаются свои объекты типов TableAdapter и BindingSource. Объект TableAdapter используется для передачи данных между таблицей базы данных и соответствующим объектом типа Table на клиенте, а объект типа BindingSource – для связывания объекта типа Table на клиенте с соответствующей таблицей базы данных. Объект типа DataSet, объединяющий на стороне клиента все объекты типа Table, создается только один для всех таблиц.
В окне Data Sources дочерние таблицы представлены в двух местах. Прежде всего, все таблицы представлены в основном дереве объектов и помечены символом +. Если раскрыть символ "+", можно увидеть подчиненное дерево, содержащее колонки таблицы. Если раскрыть символ "+" у родительской таблицы, в подчиненном ей дереве колонок можно увидеть ссылку на дочернюю таблицу (также помеченную символом "+").
Если перетаскивать на поле DataGridView таблицы из основного дерева, получим независимое отображение содержимого таблиц. Если же на поле DataGridView перетащить дочернюю таблицу из подчиненного дерева колонок, отображение содержимого родительской и дочерней таблиц будет синхронизовано по значению атрибутов первичного и внешнего ключей. В этом случае при позиционировании курсора на некоторой строке родительской таблицы можно будет в дочерней таблице увидеть только те строки, у которых значение внешнего ключа совпадает со значением первичного ключа выбранной строки родительской таблицы.
Именование объектов
По умолчанию, если не указывается иное, имена объектов формируются по следующим правилам:
– имя объекта типа DataSet (имя набора данных) определяется как имя_БДDataSet;
- имя объекта типа TableAdapter (адаптера таблицы) определяется как имя_таблицыTableAdapter;
- имя объекта типа Table (таблицы в наборе данных) совпадает с именем таблицы в базе данных;
- имя объекта типа BindingSource определяется как имя_таблицыBindingSource.
Если такой способ именования объектов почему-либо не устраивает, имена этих объектов можно выбирать по своему желанию.
Обмен данными с базой данных
Передача данных из таблицы базы данных в объекты типа Table в DataSet осуществляется с помощью следующего метода:
имя_адаптера_таблицы.Fill(имя_набора_данных.имя_таблицы);
Передача данных из DataSet в таблицы базы данных осуществляется с помощью следующего метода:
имя_адаптера_таблицы.Update(имя_набора_данных.имя_таблицы);
Важно соблюдать порядок обновления родительской и дочерней таблиц.