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 как основную технологию доступа данным в веб приложениях.