ADO.NET: Обзор технологии - Практическое применение ADO.NET
ОГЛАВЛЕНИЕ
Практическое применение ADO.NET
Введение.
Умение применить на практике теоритические знания преумножает их цену, поэтому мы посвящаем примерам работы с ADO.NET отдельный раздел, где рассмотрим наиболее типичные задачи, разбив их на отдельные блоки: соединение с источником данных, выборка, удаление и обновление информации, вывод содержимого на экран, работа с XML и т.д. В качестве платформы для построения интерфейса будет использована ASP.NET, а как язык программирования взят C#.
Managed Providers.
ADO.NET поддерживает два типа источников данных - SQL Managed Provider и ADO Managed Provider. SQL Managed Provider применяется для работы с Microsoft SQL Server 7.0 и выше, ADO Managed Provider - для всех остальных баз данных.
SQL Managed Provider - работает по специальному протоколу, называемому TabularData Stream (TDS) и не использует ни ADO, ни ODBC, ни какую-либо еще технологию. Ориентированный специально на MS SQL Server, протокол позволяет увеличить скорость передачи данных и тем самым повысить общую производительность приложения.
ADO Managed Provider - предназначен для работы с произвольной базой данных. Однако за счет универсальности есть проигрыш по сравнению с SQL Server Provider, так что при работе с SQL Server рекомендовано использовать специализированные классы. В данном обзоре мы коснемся ADO Managed Provider лишь мельком, указав только существующие незначительные различия, так как наиболее употребимой базой данных представляется SQL Server 7.0 или 2000, а разница заключается, в основном, в именовании.
Для работы с нашими примерами вам понадобится создать базу данных dotSITE и выполнить следующие скрипты для создания структуры и минимального наполнения.
if exists (select * from sysobjects where id = object_id(N'[dbo].[Articles]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[Articles]GOif exists ( OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[Authors]GO CREATE TABLE [dbo].[Articles] ( [Theme] [char] (50) NOT NULL , [Author] [int] NULL ) ON [PRIMARY]GO CREATE TABLE [dbo].[Authors] ( [AuthorID] [int] IDENTITY (1, 1) NOT NULL , [PRIMARY]GO insert into Authors(Name,SirName) values ('Michael','Kondratiev')insert into Authors(Name,SirName) values ('Andrew','Filev')insert into Authors(Name,SirName) values ('Alex','Utkin')insert into Articles(AuthorID,Theme) values (1,'ASPNET Authentication') insert into Articles(AuthorID,Theme) values (2,'ASPNET Overview') insert into Articles(AuthorID,Theme) values (3,'Soap') |
Теперь, когда мы создали базу данных, можно переходить непосредственно к примерам. Во всех случаях, кроме особо оговоренных будет использоваться SQL Managed Provider.
Установление соединения с базой данных:
Чтобы установить соединение с нашейбазой данных следует выполнить следующий код:
SQLConnectionmyConnection= myConnection.Open(); |
Важно! Не забудьте импортировать соответствующие пространства имен в зависимости от используемого Managed Provider. В ASP.NET это будет выглядеть:
<% 'ДЛЯ ADO Managed Provider %><%@ Import Namespace="System.Data" %> <%@ Import Namespace="System.Data.ADO" %><% 'ДЛЯ SQL Managed Provider %> <%@ Import Namespace="System.Data" %><%@ Import Namespace="System.Data.SQL" %> |
Выборка, удаление и обновление данных:
Для выполнения операций над базой данных используется класс SQLConnection. При его создании мы передаем строку, содержащую SQL скрипт и имя соединения. В нашем случае это будет:
ADOCommand myCommand = new ADOCommand("select * from Authors", myConnection); |
DataSet ds = new DataSet();myCommand.FillDataSet(ds, "Authors"); |
myCommand.ActiveConnection.Open(); |
<%@ Import Namespace="System.Data" %> <script language="C#"runat="server"> SQLConnectionmyConnection= SQLDataSetCommand myCommand = DataSet ds = new DataSet(); MyDataGrid.DataSource=ds.Tables["Authors"].DefaultView; <h3> <font face="Verdana"> Вывод результатов выборки на экран</font></h3> <ASP:DataGrid id="MyDataGrid" runat="server" ShowFooter="false" HeaderStyle-BackColor="green" MaintainState="false" /></body></html> |
<%@ Import Namespace="System.IO" %> <html><script language="C#" runat="server"> DataSet ds = new DataSet(); FileStream fstream = newFileStream( StreamReader STRreader = new StreamReader(fstream); ds.ReadXml(STRreader); fstream.Close(); DataView Source = new DataView(ds.Tables[0]); MySpan.InnerHtml = Source.Table.TableName; MyDataGrid.DataSource = Source; MyDataGrid.DataBind(); }</script><body> <h3> <font face= "Verdana">Данные из XML: <ASP:DataGrid id="MyDataGrid" runat="server" ShowFooter="false" CellPadding=3 CellSpacing="0" Font-Name="Verdana" Font-Size="8pt" HeaderStyle-BackColor="green" MaintainState="false" /></body></html> |
Как видно, есть небольшие отличия от работы с DataSet, заполняемым из SQL БД, заключающиеся в основном в использовании FileStreamObject. Однако, на мой взгляд, текст достаточно прозрачен и не нуждается в комментариях.
Подведем итог. ADO.NET представляет новую структуру объектов и новую модель доступа к данным, позволяющую улучшить производительность наиболее часто встречающихся приложений. Это дает нам основания пророчить ADO.NET как основную технологию доступа данным в веб приложениях.
