Опубликован: 11.09.2006 | Уровень: специалист | Доступ: свободно
Лекция 4:

Работа с данными

Подключение к базе данных — технология 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.

Создание Data Form Wizard

Рис. 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 всего лишь генерирует код, который можно просматривать и изменять в соответствии с задачами проекта.

Елена Дьяконова
Елена Дьяконова

При нажатии на Сумма в примере ArbitraryMethod из Лекция 7, VS 2013 выдается ошибка: 

Необработанное исключение типа "System.InvalidOperationException" в System.Windows.Forms.dll

Дополнительные сведения: Недопустимая операция в нескольких потоках: попытка доступа к элементу управления "lblResult" не из того потока, в котором он был создан.

Затем:

Необработанное исключение типа "System.InvalidOperationException" в mscorlib.dll

Дополнительные сведения: Для каждой асинхронной операции метод EndInvoke может вызываться только один раз.

Александр Сороколет
Александр Сороколет

Свойство WindowState формы blank Maximized. Не открывается почемуто на всё окно, а вот если последующую форму бланк открыть уже на макс открывается :-/