|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
9. Обращение к реляционным данным средствами Microsoft Visual Studio .NET9.1 Общие приемы работы с ADO.NET. Главные объекты ADO.NETОбзор ADO.NET, объекты DataConnection, DataAdapter, DataSet, DataTable Наиболее рекомендованная технология для обращения к источникам данных в VS.NET - это ADO.NET. ADO.NET - это новая технология, сильно отличная от обычного ADO. В большинстве .NET Web-приложений предлагается использовать ADO.NET, но разработчики вполне могут использовать и обычный ADO средствами взаимодействия .NET и стандартных COM-компонентов. ADO.NET - набор классов для подключения к источникам данных и работе с данными на них. Главное отличие от обычного ADO - в подходе к работе с данными. ADO основывается на работе в рамках непрерывно поддерживаемого подключения, а ADO.NET - специально разработан для работы в disconnected environment (что очень удобно для Web-приложений). В качестве формата для обмена данными используется XML, что также дает большой выигрыш по многим причинам. Обычно при использовании ADO.NET необходимо импортировать пространство имен System.Data. В зависимости от того, подключение к какому источнику данных вы планируете использовать, возможно, есть смысл импортировать также пространство имен System.Data.SqlClient или System.Data.Oledb: Imports System.Data Imports System.Data.SqlClient Imports System.Data.OleDb Объектная модель ADO.NET обеспечивает структуру для доступа к данным из различных источников. Две главные части ADO.NET - DataSet и .NET data provider. DataSet - это набор объектов из базы данных (фактически этот объект в ADO.NET пришел на смену Recordset). Обычно он состоит из одного или нескольких объектов DataTables, а также может включать в себя объекты DataView и другие. Data provider обеспечивает связь между источником данных и DataSet. Он включает в себя объекты: · Connection - подключение к источнику; · Command - выполнение команд на источнике; · DataReader - обеспечивает поток данных с источника; · DataAdapter - обеспечивает связь между DataSet и provider, а также ответственен за применение изменений, которые вносятся в DataSet, на источник. В .NET Framework предусмотрен SQL Server .NET Data provider (для подключения к SQL Server версии 7.0 и старше) и OLEDB .NET data provider (для подключения ко всем другим источникам данных). Для каждого из них предусмотрены свои объекты: SqlConnection и OleDbConnection и т.п. Объект DataSet позволяет хранить информацию в рассоединенной среде. После установления соединения с базой данных в объект DataSet обычно скачиваются данные и пользователь работает уже с ними. Если пользователь внес изменения в данные в DataSet, то для записи этих изменений в DataSet соединение может быть установлено повторно. Внутри DataSet данные хранятся внутри объектов DataTable, которые могут быть связаны между собой объектом DataRelation. Подробнее про работу с этими объектами - ниже в этом и следующих модулях. Обычно основные этапы работы пользователя с данными через ADO.NET выглядят так: 1) клиент запрашивает данные 2) создаются объекты Connection и DataAdapter, происходит установка соединения; 3) объект DataSet заполняется данными через DataAdapter и соединение с источником данных разрывается; 4) объект DataSet предоставляется клиенту. Клиент просматривает полученные данные и вносит в них изменения; 5) для сохранения изменений на источнике данных объект DataAdapter опять обращается к объекту Connection, затем открывается соединение с источником и на источник вносятся изменения С теорией работы ADO.NET мы ознакомились, теперь - о том, как все это использовать на практике. Проще всего настроить подключение через ADO.NET, используя имеющиеся графические средства Visual Studio.NET. Для этого нужно открыть окно Server Explorer. Список доступных в сети SQL Server уже доступен через узел SQL Servers, а для всех остальных источников данных можно щелкнуть правой кнопкой мыши по самой верхней строчке Data Connections и создать новое подключение через контекстное меню. После того, как оно будет создано, достаточно просто будет перетащить таблицу или другой объект базы данных на страницу. На страницу будут автоматически помещены объекты Connection и DataAdapter с настроенным набором свойств (например, для Connection будет настроено свойство ConnectionString). Просмотреть то, что возвращает DataAdapter, можно, щелкнув по нему правой кнопкой мыши и в контекстном меню выбрав Preview Data, а затем - Fill dataset. Подробнее про объект DataAdapter. Этот объект для взаимодействия с источником данных использует ряд других объектов: · объект Connection - для подключения к источнику; · объекты Command - для выполнения различных действий с данными. Доступ к ним производится через одноименные свойства: o SelectCommand - для команды SELECT, которая будет передаваться на источник данных; o UpdateCommand, InsertCommand, DeleteCommand - аналогично. Если вы работаете только с одной таблицей в базе данных, то для автоматической генерации значений свойств UpdateCommand, InsertCommand и DeleteCommand можно использовать объект CommandBuilder. После того, как вы разместили на странице объекты Connection и DataAdapter, следующее действие - создать объект DataSet. Его можно создать как при помощи графического интерфейса, так и при помощи кода. При помощи графического интерфейса: в контекстном меню для объекта DataAdapter выбрать Generate DataSet. Затем выбрать имя DataSet, какие таблицы в него включать и сделать ли его видимым в режиме Designer. В ваш проект будет добавлен файл .xsd с определением данных, которые можно будет поместить в этот DataSet. Конечно же, объект DataSet можно создать и при помощи кода: Dim ds As New DataSet() DataAdapter1.Fill(ds) Чаще всего пользователю необходимо отобразить содержимое DataSet на Web-форме. Для этого используются так называемые List-Bound Controls: элементы управления, которые предназначены для показа информации из источника данных. К ним относятся CheckBoxList, GridView, DataList, DropDownList, ListBox, RadioButtonList и Repeater. Вначале мы определяем значение свойства DataSource для такого источника данных (в качестве значения ему передается созданный нами DataSet), а затем вызываем метод DataBind: DataGrid1.DataBind() Обычно вызов этого метода помещается в событийную процедуру Page_Load или процедуру для Click специальной кнопки. Для проверки того, отправляется ли страницу пользователю в первый раз, можно проверить значение свойства IsPostBack: Private Sub Page_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load If Not Page.IsPostBack Then SqlDataAdapter1.Fill(DataSet51) DataGrid1.DataBind() End If End Sub Для работы с данными в ASP.NET 2.0 предусмотрено несколько очень удобных элементов управления: GridView, DataList, DetailsView, FormView, Repeater, ReportViewer. Все эти элементы управления находятся в контейнере Data в ToolBox. Отметим, что набор элементов управления для работы с данными в ASP.NET 2.0 сильно отличается от набора элементов управления, который был предусмотрен в предыдущих версиях ASP.NET. Эти элементы управления будут подробно рассмотрены в следующих разделах данного модуля. Здесь будет приведена только их краткая характеристика: · GridView — элемент управления, представляющий информацию из источника в табличной форме. Является наследником элемента управления DataGrid из предыдущих версий ASP.NET. Самый простой и естественный элемент управления, который позволяет просматривать информацию из базы данных, редактировать записи и удалять их. К сожалению, возможностей для добавления новых данных не предусмотрено; · DataList — элемент управления, которые предоставляет те же функциональные возможности по работе с данными, что и GridView. Однако, если GridView отображает информацию в фиксированной табличной форме, то для DataList нужно настраивать шаблоны, в которые можно поместить любые элементы управления, привязав их к столбцам в источниках данных. По этой же причине настройка DataList требует намного больше усилий, чем настройка GridView; · DetailsView и FormsView — элементы управления-близнецы. Оба этих элемента управления предоставляют полные возможности для работы с данными (вставка новых записей, редактирование и удаление существующих). Оба этих элемента управления показывают по одной записи на Web-странице. Отличительной особенностью FormsView является то, что в этом элементе управления предусмотрены дополнительные шаблоны для отображения данных (ItemTemplate, AlternatingItemTemplate), и за счет этого этот элемент управления обеспечивает большую гибкость; · Repeater — элемент управления, предназначенный для создания ленточных отчетов. Он достаточно сложен в настройке по причине того, что код для шаблонов необходимо создавать вручную в коде HTML (на вкладке Source). Средств изменения записей в этом элементе управления не предусмотрено; · ReportViewer — средство для отображения на Web-странице отчетов Reporting Services (компонента SQL Server). Вся работа по созданию и настройке таких отчетов производится средствами Reporting Services, и поэтому в этом модуле данный элемент управления рассматриваться не будет. У всех элементов управления для работы с данными есть общие возможности. Одинаково настраиваются источники данных (см. раздел 9.2), для каждого из элементов управления предусмотрены средства автоматического форматирования (Auto Format). выбора и настройки набора столбцов. Средства для настройки шаблонов также схожи для большинства элементов управления для работы с данными. Отметим, что в практической работе возможностей стандартных элементов управления для работы с данными часто не хватает. Поэтому эти элементы управления часто комбинируют (например, для просмотра всех записей используется GridView, а для работы с отдельной записью на той же странице — FormsView). Во многих ситуациях для работы с данными используются обычные элементы управления (TextBox, Label, ниспадающие списки, календари и т.п.). Логику изменения данных также часто приходится определять вручную.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||