Технология Microsoft ADO.NET

Использование визуальной среды для работы с ADO .NET


Когда мы перетаскиваем на форму элемент управления, Visual Studio .NET автоматически генерирует код, описывающий этот элемент. Если при размещении кнопок, текстовых полей и других элементов управления создавать их программно нецелесообразно, то при работе с элементами данных все как раз наоборот - лучше всего создавать все объекты ADO .NET вручную, что обеспечивает большую гибкость приложения. Тем не менее на первых порах использования ADO .NET полезно работать с визуальной средой разработки.

Рассмотрим работу с базой данных Microsoft Acсess xtreme1), входящей в состав Microsoft Visual Studio.NET, и другую - с базой Microsoft SQL2) NorthwindCS . В каждой базе есть таблица Customer(s)3). Наша задача - вывести содержимое двух таблиц Customer на две Windows-формы.

Microsoft Access, база данных xtremeMicrosoft SQL, база данных NorthwindCS

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

Назовите его VisualDataMDBНазовите его VisualDataSQL

Размещаем на создавшейся форме элемент управления DataGrid, свойству Dock устанавливаем значение "Fill". Теперь в окне ToolBox переходим на закладку Data (рис. 2.8).


Рис. 2.8.  На вкладке Data находятся все элементы управления для работы с ADO.NET

Поместите на форму объект OleDbDataAdapter Поместите на форму объект SqlDataAdapter

Перед нами появляется мастер настройки элемента управления. Для OleDbDataAdapter этот мастер - тот же самый, который был описан и изображен на рис. 2.2 - 2.3. Вернитесь к этим рисункам и сконфигурируйте эти два шага OleDbDataAdapter самостоятельно. Для SqlDataAdapter на вкладке "Поставщик данных" по умолчанию выбран необходимый поставщик (рис. 2.9).


Рис. 2.9.  Поставщик данных Microsoft OLE DB Provider for SQL Server

Нажимаем кнопку "Далее" (или переходим на вкладку "Подключение") (рис. 2.10).


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

Для подключения к базе данных SQL, расположенной на вашем компьютере, в пункте 1 вводим (local) или просто точку - ".".
В пункте 2 используем учетные сведения системы: по умолчанию пароль учетной записи администратора SQL Server - пустой. В пункте 3 выбираем базу данных NorthwindCS.

В следующем шаге мастера - определение типа запроса. Параметры, предлагаемые мастером, будут отличаться (рис. 2.11 и рис. 2.12):


Рис. 2.11.  Определение типа запросов объекта OleDbDataAdapter


Рис. 2.12.  Определение типа запросов объекта SqlDbDataAdapter

Для базы данных Microsoft Access мы можем только использовать SQL-запросы - другие значения не активны. Для базы данных Microsoft SQL Server мы можем либо применять SQL-запросы, либо создать новую хранимую процедуру (stored procedure), либо использовать существующую хранимую процедуру. Различия подобного рода определяются типом баз данных. Для объекта SqlDataAdapter оставляем значение, предложенное по умолчанию: использование SQL-запросов.

В следующем шаге - создание SQL-запросов (Generate SQL statements) - мы можем вводить текст запроса непосредственно. Но удобнее всего воспользоваться "Построителем запросов": нажимаем на кнопку "Query Builder_" (рис. 2.13). Поскольку окна добавления таблиц для обеих баз данных одинаковы - незначительно различается лишь содержимое, - я привожу рисунок для OleDbDataAdapter:


Рис. 2.13.  Добавление таблицы в окно Построителя запросов

Выбираем таблицу Customer (Customers), нажимаем кнопку Add и затем Close. Затем в окне Query Builder выбираем все столбцы (All Colimns), как показано на рис. 2.14:


Рис. 2.14.  Добавление столбцов. Поставив галочку напротив пункта (All Columns), мы извлекаем все столбцы из таблицы

Нажимаем кнопку OK. В окне "Generate the SQl statements", к которому мы вернулись, приводится SQL- запрос, созданный мастером:

SELECT Customer.* FROM Customer

SELECT Customers.* FROM Customers

Обратите внимание, что синтаксис этого запроса несущественно отличается от "классического" SQL- запроса, рассмотренного выше.



Нажимаем кнопку Next. В окне "Обзор результатов мастера" ( View Wizard Results) приводится список результатов работы мастера. Вид этого списка может отличаться, как это изображено на рис. 2.15 и 2.16:


Рис. 2.15.  Список результатов работы мастера объекта OleDbDataAdapter


Рис. 2.16.  Список результатов работы мастера объекта SqlDbDataAdapter

Чем обусловлено это различие? Для базы данных Access мастером создана возможность не только просмотра данных из базы данных - SQL-запрос SELECT, но и возможность ее изменения - запросы INSERT, UPDATE, DELETE. Для базы данных SQL Server создана лишь возможность просмотра базы данных. Для изменения данных необходимо проходить авторизацию (см. рис. 2.10) с учетной записью администратора базы данных.

Нажимаем кнопку Finish. Для объекта OleDbDataAdapter возникает окно (см. рис. 2.6), которое мы уже описывали выше.

Мастер создал на панели компонент по два элемента: oleDb DataAdapter1 и oleDbConnection1 для VisualDataMDB и sqlDbData Adapter1 и sqlDbConnection1 для VisualDataSQL. oleDbDataAdapter1 (или sqlDbDataAdapter1) является основным компонентом типа OleDbData Adapter (или SqlDataAdapter), который мы создавали при помощи мастера. Объект oleDbConnection1 (или sqlDbConnection1) был создан мастером как необходимый элемент подключения к базе. Образно говоря, мы получили адаптер (DataAdapter1) и вилку (Connection1) для подключения к источнику данных. Теперь нам необходимо добавить объект DataSet - тот самый "буфер", в котором будет храниться информация, полученная из базы данных. Щелкаем на oleDbDataAdapter1 (или sqlDbDataAdapter1), для его выделения. Открываем свойства этого элемента. На и нформационной панели щелкаем на ссылку "Generate DataSet" для создания объекта DataSet4) (рис. 2.17).


Рис. 2.17.  Создание DataSet

В появившемся окне "Generate DataSet" задаем имена - dsCustomer и dsCustomers соответственно.

Итак, все "невидимые" части механизма подключения к базе данных у нас уже есть.


Осталось теперь связать видимый интерфейс с данными. Объектом, отображающим данные на форме, у нас является dataGrid1. В свойстве этого элемента DataSource (источник данных) выбираем в качестве источника созданный объект dsCustomer1 (рис. 2.18).


Рис. 2.18.  Определение источника данных для элемента управления dataGrid1

На форме в режиме дизайна у нас немедленно появилась символическая таблица со знаком (+). Последнее, что нам осталось сделать, - это заполнить объект DataSet (здесь - dsCustomer1). Переходим в код форм и вносим соответствующие добавления:

using System.Data.OleDb; // Подключаем пространство имен для работы с поставщиком OleDb

private void Form1_Load(object sender, System.EventArgs e) { oleDbDataAdapter1.Fill(dsCustomer1); }

using System.Data.SqlClient; // Подключаем пространство имен для работы с поставщиком SQL

private void Form1_Load(object sender, System.EventArgs e) { sqlDataAdapter1.Fill(dsCustomers1); }

В обоих случаях в методе загрузки формы вызываем метод Fill объекта oleDbDataAdapter1 (или oleDbDataAdapter1) и передаем ему в качестве параметра dsCustomer1. Опять же, говоря образно, мы "заливаем" данные из адаптера в DataSet, который затем распоряжается ими - здесь мы определили, что DataSet выступает в качестве источника данных для dataGrid1.

Запустите приложения. Щелкните на знак (+), а затем на ссылку "Customer". Готовые приложения будут иметь следующий вид (рис. 2.19 и 2.20):


Рис. 2.19.  Готовое приложение VisualDataMDB


Рис. 2.20.  Готовое приложение VisualDataSQL

В программном обеспечении к курсу вы найдете эти приложения5) - Code\Glava1\VisualDataMDB и VisualDataSQL.


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