Основы ASP.NET 2.0

       

SqlDataSource


SqlDataSource объединяет в себе возможности SqlConnection и SqlDataAdapter (плюс дополнительные).

Итак, у нас есть строка подключения в файле web.config:

<add name="DemoBaseConnectionString1" connectionString="Data Source=(local)\SQLEXPRESS;Initial Catalog=DemoBase;Integrated Security=True" providerName="System.Data.SqlClient" />

В свойство ConnectionString записывается эта строка:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DemoBaseConnectionString1 %>" ProviderName="<%$ ConnectionStrings:DemoBaseConnectionString1.ProviderName %>" </asp:SqlDataSource>

В свойстве DataSourceMode SqlDataSource задается, посредством DataReader или DataSet получаются данные. При чтении посредством DataReader некоторые возможности не поддерживаются.

Получение данных связано со свойствами, похожими на свойства SqlDataAdapter: SelectCommand, SelectCommandType, DeleteCommand, DeleteCommandType и так далее. SelectCommandType может быть 2 типов — Text и StoredProcedure. Команды выполняются, когда вызываются соответствующие методы.

Метод Select вызывается с параметром типа DataSourceSelectArguments и возвращает DataSet или IDataReader в зависимости от значения свойства DataSourceMode, остальные же методы вызываются без параметров и возвращают количество обработанных строк:

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT * FROM [Customers]" ProviderName="<%$ ConnectionStrings:NorthwindConnectionString.ProviderName %>"> </asp:SqlDataSource>


Этот SqlDataSource читает все записи из таблицы Customers с помощью простого запроса в DataSet:

<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="[Ten Most Expensive Products]" DeleteCommandType="StoredProcedure"> </asp:SqlDataSource>

Метод Select нет необходимости вызывать явно. Он вызывается автоматически, когда связанному с SqlDataSource элементу нужны данные для отображения.

Процедуры сервера обычно имеют параметры. Поэтому предусмотрены также коллекции параметров. Сами параметры могут быть обычными или связанными с элементами управления.

Значения параметров можно получать и из других разнообразных источников.

Есть несколько классов параметров — наследников класса Parameter: CookieParameter использует значение ключа файла cookie, FormParameter — переменных формы, QuerystringParameter — адресной строки, ProfileParameter — профиля пользователя и SessionParameter — переменной сессии:

<asp:Parameter Name="UID" Type="Int32" DefaultValue="0" />

Такой тип параметров применяется, если SqlDataSource используется как источник данных для элементов с автоматическим связыванием — GridView, FormView, DetailsView. Значение параметра передается во "внутренностях" этих элементов.

В других случаях задействуется ControlParameter, то есть значение параметра берется из элемента управления.



Также задается свойство, откуда и берется значение. Хотя если это Text, его можно не писать:

<asp:SqlDataSource ID="SqlDataSource3" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="Sales by Year" SelectCommandType="StoredProcedure"> <SelectParameters> <asp:Parameter Name="Beginning_Date" Type="DateTime" DefaultValue="01.01.1998"/> <asp:ControlParameter Name="Ending_Date" Type="DateTime" ControlID="Calendar2"/> </SelectParameters> </asp:SqlDataSource>

Источник параметра типа "Дата" — элемент управления "Календарь". При заданном свойстве параметра ConvertEmptyToNull текстовый параметр конвертируется в Null, если он пустой (равен System. String.Empty).

Свойство CancelSelectOnNullParameter определяет, будет ли прерван запрос, если значение какого-либо параметра равно Null:

<asp:SqlDataSource ID="SqlDataSource4" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT * FROM [Customers] where @Country is null or Country = @Country" ProviderName="<%$ ConnectionStrings:NorthwindConnectionString.ProviderName %>" CancelSelectOnNullParameter="False"> <SelectParameters> <asp:QueryStringParameter Name="Country" QueryStringField="Country" /> </SelectParameters> </asp:SqlDataSource>

Этот запрос будет брать параметр из командной строки, например

http://localhost:3457/WebSite4/CustomersByCountry.aspx?Country=UK


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







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий