Создание Windows-приложений на основе Visual C#

         

Подключение к базе данных — технология ADO.NET


ADO.NET — это набор библиотек, входящий в состав Microsoft .NET Framework и предназначенный для взаимодействия с различными базами данных из .NET-приложений. Библиотеки ADO.NET включают классы для подсоединения к источнику данных, выполнения запросов и обработки их результатов. ADO.NET также можно использовать в качестве надежного, иерархически организованного, отсоединенного кэша данных для автономной работы с данными.

Мастер Data Form Wizard из Visual Studio .NET позволяет быстро, буквально в несколько шагов, создать связанную с данными форму. Код, генерируемый мастером, можно будет просматривать и изменять.

Мы рассмотрим подключение к базе данных Microsoft Access RBProduct, которую мы уже рассматривали выше. Наша задача: вывести содержимое двух связанных таблиц — "Поставщики" и "Товары" — на Windows-форму.

Запустите Visual Studio .NET, создайте новый проект, тип проекта — Windows Application. Назовите его DataWizardMDB.

В окне Solution Explorer щелкаем правой кнопкой мыши на имени проекта — DataWizardMDB — и в появившемся меню выбираем Add/Add New Item. В появившемся окне выбираем мастер Data Form Wizard, как показано на рис. 4.22.


Рис. 4.22.  Создание Data Form Wizard

Называем новую форму DataFormMDB.

В появившемся мастере нажимаем кнопку Next. В следующем шаге определяется объект DataSet, название которого должно соответствовать содержимому, поэтому называем его dsProviders. В следующем шаге Мастера —Choose a data connection — требуется создать подключение к базе данных. Поскольку у нас еще нет никакого подключения, нажимаем на кнопку New Connection. В появившемся окне "Свойства связи с данными" необходимо определить параметры создаваемого подключения. Переключаемся на вкладку "Поставщик данных" для выбора нужного поставщика OLE DB (рис. 4.23).


Рис. 4.23.  Определение поставщика данных

Поставщик данных Microsoft Jet 4.0 OLE DB Provider позволяет подключаться к базам данных формата Microsoft Aceess (mdb). Нажимаем кнопку "Далее" (или переходим на вкладку "Подключение") (рис. 4.24).


Рис. 4.24.  Задание параметров подключения

В пункте 1 нажимаем кнопку (…) и указываем путь к базе данных RBProduct.mdb, расположенной на вашем компьютере. В пункте 2 можно оставить значение по умолчанию — если вы специально не изменяли имя пользователя и пароль доступа к базе, то стандартное имя Admin позволит создать подключение. Если вы правильно настроили права доступа к базе данных, то при нажатии кнопки "Проверить подключение" система выдаст сообщение "Проверка подключения выполнена". На вкладках "Дополнительно" и "Все" можно устанавливать права доступа и просматривать все свойства формируемого подключения. Не изменяя ничего на этих вкладках, нажимаем OK.

Далее нам предстоит определить, какую таблицу базы данных мы собираемся извлекать. В окне мастера перечислены все доступные в схеме базы данных таблицы, представления и хранимые процедуры. Выберите в списке Available Items нужные таблицы и переместите их в список Selected Items, щелкнув кнопку с направленной вправо стрелкой. Если вы ошиблись и хотите удалить какие-то таблицы из списка Selected Items, выберите их и щелкните кнопку со стрелкой влево. Кроме того, добавлять и удалять таблицы можно, дважды щелкнув их название мышью. Выбираем две таблицы: "Поставщики" и "Товары" (рис. 4.25).


Рис. 4.25.  Выбор таблиц, которые будут отображаться на форме

Теперь необходимо определить отношения между таблицами. Отношения позволяют обеспечивать соблюдение правил ссылочной целостности, каскадно передавая изменения от одной таблицы к другой. Кроме того, они упрощают поиск данных в таблицах. Название отношения рекомендуется составлять из имен родительской и дочерней таблиц (именно в таком порядке). В качестве имени выберем ProvidersProducts. Далее определяем родительскую таблицу (Parent table) — "Поставщики" и дочернюю (Child table) – "Товары". Поле "Код поставщика" определяет связь между этими таблицами. Щелкните кнопку со стрелкой вправо, чтобы добавить отношение в список Relations, и затем щелкните Next.

Далее определяем столбцы (поля), извлекаемые из обеих таблиц. Оставляем все поля (рис. 4.26).


Рис. 4.26.  Задание связей между таблицами

В последнем шаге мастера предстоит определить вид размещения данных на форме — всех записей в виде таблицы (All records in a grid) либо каждой записи в отдельном текстовом поле (Single records in individual control). Выбираем второй вариант. Здесь же можно определить наличие дополнительных элементов управления — кнопок навигации и изменения записей. Оставляем эти значение по умолчанию. Завершаем работу мастера, нажимая кнопку Finish.

Возникает сообщение: "Пароль будет сохранен в виде текста и будет доступен для чтения в коде и сборке". Выбрав Include password, вы включаете пароль в приложение (он будет доступен), но избавляетесь от необходимости введения имени пользователя и пароля каждый раз при подключении к базе данных (рис. 4.27).


Рис. 4.27.  Выбор расположения пароля

Практически все готово. Однако, запустив приложение, мы обнаруживаем, что по-прежнему запускается пустая форма Form1. Переходим в код Form1 и копируем следующий участок кода:


ADO.NET — это набор библиотек, входящий в состав Microsoft .NET Framework и предназначенный для взаимодействия с различными базами данных из .NET-приложений. Библиотеки ADO.NET включают классы для подсоединения к источнику данных, выполнения запросов и обработки их результатов. ADO.NET также можно использовать в качестве надежного, иерархически организованного, отсоединенного кэша данных для автономной работы с данными.

Мастер Data Form Wizard из Visual Studio .NET позволяет быстро, буквально в несколько шагов, создать связанную с данными форму. Код, генерируемый мастером, можно будет просматривать и изменять.

Мы рассмотрим подключение к базе данных Microsoft Access RBProduct, которую мы уже рассматривали выше. Наша задача: вывести содержимое двух связанных таблиц — "Поставщики" и "Товары" — на Windows-форму.

Запустите Visual Studio .NET, создайте новый проект, тип проекта — Windows Application. Назовите его DataWizardMDB.

В окне Solution Explorer щелкаем правой кнопкой мыши на имени проекта — DataWizardMDB — и в появившемся меню выбираем Add/Add New Item. В появившемся окне выбираем мастер Data Form Wizard, как показано на рис. 4.22.


Рис. 4.22.  Создание Data Form Wizard

Называем новую форму DataFormMDB.

В появившемся мастере нажимаем кнопку Next. В следующем шаге определяется объект DataSet, название которого должно соответствовать содержимому, поэтому называем его dsProviders. В следующем шаге Мастера —Choose a data connection — требуется создать подключение к базе данных. Поскольку у нас еще нет никакого подключения, нажимаем на кнопку New Connection. В появившемся окне "Свойства связи с данными" необходимо определить параметры создаваемого подключения. Переключаемся на вкладку "Поставщик данных" для выбора нужного поставщика OLE DB (рис. 4.23).


Рис. 4.23.  Определение поставщика данных

Поставщик данных Microsoft Jet 4.0 OLE DB Provider позволяет подключаться к базам данных формата Microsoft Aceess (mdb). Нажимаем кнопку "Далее" (или переходим на вкладку "Подключение") (рис. 4.24).


Рис. 4.24.  Задание параметров подключения

В пункте 1 нажимаем кнопку (…) и указываем путь к базе данных RBProduct.mdb, расположенной на вашем компьютере. В пункте 2 можно оставить значение по умолчанию — если вы специально не изменяли имя пользователя и пароль доступа к базе, то стандартное имя Admin позволит создать подключение. Если вы правильно настроили права доступа к базе данных, то при нажатии кнопки "Проверить подключение" система выдаст сообщение "Проверка подключения выполнена". На вкладках "Дополнительно" и "Все" можно устанавливать права доступа и просматривать все свойства формируемого подключения. Не изменяя ничего на этих вкладках, нажимаем OK.

Далее нам предстоит определить, какую таблицу базы данных мы собираемся извлекать. В окне мастера перечислены все доступные в схеме базы данных таблицы, представления и хранимые процедуры. Выберите в списке Available Items нужные таблицы и переместите их в список Selected Items, щелкнув кнопку с направленной вправо стрелкой. Если вы ошиблись и хотите удалить какие-то таблицы из списка Selected Items, выберите их и щелкните кнопку со стрелкой влево. Кроме того, добавлять и удалять таблицы можно, дважды щелкнув их название мышью. Выбираем две таблицы: "Поставщики" и "Товары" (рис. 4.25).


Рис. 4.25.  Выбор таблиц, которые будут отображаться на форме

Теперь необходимо определить отношения между таблицами. Отношения позволяют обеспечивать соблюдение правил ссылочной целостности, каскадно передавая изменения от одной таблицы к другой. Кроме того, они упрощают поиск данных в таблицах. Название отношения рекомендуется составлять из имен родительской и дочерней таблиц (именно в таком порядке). В качестве имени выберем ProvidersProducts. Далее определяем родительскую таблицу (Parent table) — "Поставщики" и дочернюю (Child table) – "Товары". Поле "Код поставщика" определяет связь между этими таблицами. Щелкните кнопку со стрелкой вправо, чтобы добавить отношение в список Relations, и затем щелкните Next.

Далее определяем столбцы (поля), извлекаемые из обеих таблиц. Оставляем все поля (рис. 4.26).


Рис. 4.26.  Задание связей между таблицами

В последнем шаге мастера предстоит определить вид размещения данных на форме — всех записей в виде таблицы (All records in a grid) либо каждой записи в отдельном текстовом поле (Single records in individual control). Выбираем второй вариант. Здесь же можно определить наличие дополнительных элементов управления — кнопок навигации и изменения записей. Оставляем эти значение по умолчанию. Завершаем работу мастера, нажимая кнопку Finish.

Возникает сообщение: "Пароль будет сохранен в виде текста и будет доступен для чтения в коде и сборке". Выбрав Include password, вы включаете пароль в приложение (он будет доступен), но избавляетесь от необходимости введения имени пользователя и пароля каждый раз при подключении к базе данных (рис. 4.27).


Рис. 4.27.  Выбор расположения пароля

Практически все готово. Однако, запустив приложение, мы обнаруживаем, что по-прежнему запускается пустая форма Form1. Переходим в код Form1 и копируем следующий участок кода:




[STAThread] static void Main() { Application.Run(new Form1()); }

В коде DataFormMDB после Windows Form Designer generated code вставляем код и изменяем название запускаемой формы:

static void Main() { Application.Run(new DataFormMDB ()); }

В окне Solution Explorer щелкаем правой кнопкой на Form1.cs и удаляем его. Теперь, запуская приложение, мы видим DataFormMDB (рис. 4.28):


Рис. 4.28.  Готовая форма

В созданном приложении имеется несколько кнопок. Для загрузки данных нажимаем кнопку Load. Для перемещения по записям используем навигационные кнопки. При этом во второй таблице отображается список продуктов, поставляемых данным поставщиком. Для добавления новой или удаления текущей записи служат кнопки Add и Delete, для отмены изменений текущей записи – Cancel. Все изменения буферизуются и могут быть отменены нажатием кнопки CancellAll. Для передачи изменений в базу данных нажимаем кнопку Update — тогда записи изменяются в самом файле RBProduct.mdb.

Подключение к базе данных с помощью Мастера позволяет создать приложение без всякого знания технологии ADO.NET. Конечно же, подобная разработка не может нас устраивать для коммерческих приложений, требующих несравненно более гибкого кода. DataForm Wizard всего лишь генерирует код, который можно просматривать и изменять в соответствии с задачами проекта.


[STAThread] static void Main() { Application.Run(new Form1()); }

В коде DataFormMDB после Windows Form Designer generated code вставляем код и изменяем название запускаемой формы:

static void Main() { Application.Run(new DataFormMDB ()); }

В окне Solution Explorer щелкаем правой кнопкой на Form1.cs и удаляем его. Теперь, запуская приложение, мы видим DataFormMDB (рис. 4.28):


Рис. 4.28.  Готовая форма

В созданном приложении имеется несколько кнопок. Для загрузки данных нажимаем кнопку Load. Для перемещения по записям используем навигационные кнопки. При этом во второй таблице отображается список продуктов, поставляемых данным поставщиком. Для добавления новой или удаления текущей записи служат кнопки Add и Delete, для отмены изменений текущей записи – Cancel. Все изменения буферизуются и могут быть отменены нажатием кнопки CancellAll. Для передачи изменений в базу данных нажимаем кнопку Update — тогда записи изменяются в самом файле RBProduct.mdb.

Подключение к базе данных с помощью Мастера позволяет создать приложение без всякого знания технологии ADO.NET. Конечно же, подобная разработка не может нас устраивать для коммерческих приложений, требующих несравненно более гибкого кода. DataForm Wizard всего лишь генерирует код, который можно просматривать и изменять в соответствии с задачами проекта.


Содержание раздела