Опубликован: 05.08.2007 | Доступ: свободный | Студентов: 2201 / 83 | Оценка: 4.47 / 4.09 | Длительность: 20:11:00
ISBN: 978-5-9556-0097-0
Лекция 2:

Объекты ADO .NET

< Лекция 1 || Лекция 2: 123456 || Лекция 3 >

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

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

Рассмотрим работу с базой данных Microsoft Acсess xtreme1База данных Microsoft Access расположена по адресу: С(имя диска):\Program Files\Microsoft Visual Studio .NET 2003\Crystal Reports\Samples\Database\xtreme.mdb., входящей в состав Microsoft Visual Studio.NET, и другую - с базой Microsoft SQL2Разумеется, на вашем компьютере должен быть установлен Microsoft SQL Server 2000 и запущено приложение Service Manager. NorthwindCS . В каждой базе есть таблица Customer(s)3В MS Access таблица называется Customer, в SQL - Customers.. Наша задача - вывести содержимое двух таблиц Customer на две Windows-формы.

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

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

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

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

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

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

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

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

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

Рис. 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):

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

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

Рис. 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 Columns), как показано на рис. 2.14:

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

Рис. 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:

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

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

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

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

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

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

 Создание DataSet

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

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

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

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

Рис. 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 (или sqlDbDataAdapter1 ) и передаем ему в качестве параметра dsCustomer1. Опять же, говоря образно, мы "заливаем" данные из адаптера в DataSet, который затем распоряжается ими - здесь мы определили, что DataSet выступает в качестве источника данных для dataGrid1.

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

Готовое приложение VisualDataMDB

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

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

В программном обеспечении к курсу вы найдете эти приложения5Если вы попытаетесь запустить эти приложения на своем компьютере, скорее всего, возникнет исключение. Дело в том, что параметры ConnectionString у нас с вами, безусловно, различаются. Для запуска следует изменить значение, соответствующее расположению базы данных (например, xtreme) на вашем компьютере. Как это сделать - см далее ConnectionString. - Code\Glava1\VisualDataMDB и VisualDataSQL.

Server Explorer

В состав Visual Studio .NET входит замечательный инструмент управления и обзора подключениями к базам данных - Server Explorer. С его помощью можно практически мгновенно создавать приложения, использующие базы данных. Создайте новый проект. Назовите его Server_Explorer. Выберите в меню View пункт Server Explorer (или воспользуйтесь сочетанием клавиш Ctrl+Alt+S). Появится окно Server Explorer. Щелкните на Data Connections правой кнопкой мыши и выберите пункт "Add Connection" (рис. 2.21):

 Добавление соединения

Рис. 2.21. Добавление соединения

Появляется окно мастера "Свойства связи с данными", с которым мы уже встречались (см. рис. 2.2 и 2.3). Создайте самостоятельно подключение к базе данных xtreme - после того как вы это сделаете, оно появится в списке всех подключений окна Server Explorer (рис. 2.22):

 В окне Server Explorer выводятся все созданные подключения к базам данных

увеличить изображение
Рис. 2.22. В окне Server Explorer выводятся все созданные подключения к базам данных

Щелкните на знак (+) около названия подключения, откройте Tables, выберите таблицу Customer и перетащите ее на форму (рис. 2.23).

 Содержимое базы данных xtreme

Рис. 2.23. Содержимое базы данных xtreme

При появлении уже знакомого окна расположения пароля (см. рис. 2.6) выбираем "Include Password".

На панели компонент формы появились два элемента: oleDb Connection1 и oleDbDataAdapter1. Выделяем щелчком oleDbDataAdapter1, открываем его свойства, на информационной панели нажимаем "Generate DataSet". Называем объект "DataSet dsCustomer" и нажимаем "ОК". Помещаем на форме элемент управления DataGrid, в свойствах этого элемента указываем расположение Dock - Fill, DataSource - dsCustomer и переходим в код формы. Добавляем уже знакомый нам код:

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

Запускаем приложение. Его внешний вид ничем не отличается от приложения, рассмотренного в предыдущем примере.

Созданное подключение к базе данных xtreme теперь будет отображаться во всех последующих проектах в окне Server Explorer. Вам остается только выбирать нужную таблицу и перетаскивать ее на форму.

Вы также можете использовать окно Solution Explorer для быстрого просмотра содержимого баз данных и - если подключение было создано с правами администратора - изменения их. Откройте нужную таблицу и просто дважды щелкните на нее (рис. 2.24):

Просмотр таблицы Customers базы данных NorthwindCS

увеличить изображение
Рис. 2.24. Просмотр таблицы Customers базы данных NorthwindCS
< Лекция 1 || Лекция 2: 123456 || Лекция 3 >