Общие сведения о серверном веб-элементе управления SqlDataSource

Visual Studio 2010

Обновлен: Ноябрь 2007

Элемент управления SqlDataSource позволяет использовать серверный веб-элемент управления для доступа к данным, расположенным в реляционной базе данных. К ним могут относиться базы данных Microsoft SQL Server и Oracle, а также источники данных OLE DB и ODBC. Можно использовать элемент управления SqlDataSource совместно с элементами управления с привязкой данных (такими как GridView, FormView и DetailsView) для отображения данных и управления ими на веб-странице ASP.NET, почти или совсем не используя код.

В этом разделе рассматриваются следующие темы:

Элемент управления SqlDataSource использует классы ADO.NET для взаимодействия с разными базами данных, поддерживаемыми ADO.NET. В их число входят Microsoft SQL Server (с использованием поставщика System.Data.SqlClient), System.Data.OleDb, System.Data.Odbc и Oracle (с использованием поставщика System.Data.OracleClient). С помощью элемента управления SqlDataSource можно получить доступ к данным на странице ASP.NET и работать с ними, не используя непосредственно классы ADO.NET. Укажите строку подключения к базе данных и определите инструкции SQL или хранимые процедуры для работы с данными. Во время выполнения элемент управления SqlDataSource автоматически открывает подключение к базе данных, выполняет инструкцию SQL или хранимую процедуру, возвращает выбранные данные (если таковые имеются), а затем закрывает соединение.

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

При настройке элемента управления SqlDataSource укажите в качестве значения свойства ProviderName тип базы данных (по умолчанию: System.Data.SqlClient), а в качестве значения свойства ConnectionString — строку подключения, содержащую сведения, необходимые для подключения к базе данных. Содержимое строки подключения различается в зависимости от типа базы данных, к которой элемент управления источником данных пытается получить доступ. Например, для элемента управления SqlDataSource необходимо указать имя сервера, имя базы данных (каталога) и сведения о проверке подлинности пользователя при подключении к SQL Server. Сведения о допустимых строках подключения см. в разделах, описывающих свойство ConnectionString для классов SqlConnection,OracleConnection, OleDbConnection и OdbcConnection.

Можно во время разработки не указывать строки подключения в качестве свойства элемента управления SqlDataSource. Вместо этого можно централизованно сохранить их как часть параметров конфигурации приложения с помощью элемента конфигурации connectionStrings. Это позволяет управлять строками подключения независимо от кода ASP.NET, включая шифрование их с помощью защищенной конфигурации. В следующем примере иллюстрируется подключение к базе данных SQL Server Northwind с помощью строки подключения, хранящейся в элементе конфигурации connectionStrings с именем MyNorthwind.

<%@ Page language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:SqlDataSource
          id="SqlDataSource1"
          runat="server"
          DataSourceMode="DataReader"
          ConnectionString="<%$ ConnectionStrings:MyNorthwind%>"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>

      <asp:ListBox
          id="ListBox1"
          runat="server"
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>

    </form>
  </body>
</html>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head runat="server">
    <title>ASP.NET Example</title>
</head>
<body>
    <form id="form1" runat="server">
      <asp:SqlDataSource
          id="SqlDataSource1"
          runat="server"
          DataSourceMode="DataReader"
          ConnectionString="Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Northwind;"
          SelectCommand="SELECT LastName FROM Employees">
      </asp:SqlDataSource>

      <asp:ListBox
          id="ListBox1"
          runat="server"
          DataTextField="LastName"
          DataSourceID="SqlDataSource1">
      </asp:ListBox>

    </form>
  </body>
</html>


Создание команд данных с помощью элемента управления SqlDataSource

Для команды SqlDataSource можно указать не более четырех команд (запросов SQL): SelectCommand, UpdateCommand, DeleteCommand и InsertCommand. Каждая команда является отдельным свойством элемента управления источником данных. Для каждого свойства-команды укажите инструкцию SQL, выполняемую элементом управления источником данных. Если элемент управления источником данных подключается к базе данных, которая поддерживает хранимые процедуры, то вместо инструкции SQL можно указать имя хранимой процедуры.

Можно создавать параметризованные команды, содержащие местозаполнители для значений, подставляемых во время выполнения. В следующем примере показана обычная параметризованная SQL-команда SELECT:

Select CustomerID, CompanyName From Customers Where City = @city

Можно создать объекты параметров, задающих откуда команда должна получить значения параметров во время выполнения (например, из другого элемента управления, из строки запроса и т. д.). Или можно указать значения параметров программными средствами. Дополнительные сведения см. в разделе Использование параметров с элементом управления SqlDataSource.

Элемент управления источником данных выполняет команды при вызове соответствующего метода Select, Update, Delete или Insert. Метод Select вызывается автоматически при вызове метода DataBind страницы или элемента управления, связанного с элементом управления источником данных. Можно также вызвать любой из четырех методов явным образом, если требуется выполнение команды элементом управления источником данных. Некоторые элементы управления, такие как GridView, могут вызывать методы автоматически без необходимости вызова этих методов пользователем и без явного вызова метода DataBind. Дополнительные сведения см. в разделах Выбор данных с помощью элемента управления SqlDataSource и Изменение данных с помощью элемента управления SqlDataSource.

Возврат объектов DataSet или DataReader

Элемент управления SqlDataSource может возвращать данные в двух формах: как объект DataSet или как объект чтения данных ADO.NET. Можно указать, данные в какой форме следует возвращать, задав свойство DataSourceMode элемента управления источником данных. Объект DataSet содержит все данные в памяти сервера, что позволяет после извлечения данных управлять ими различными способами. Объект чтения данных содержит курсор только для чтения, позволяющий извлечь отдельные записи. Как правило, набор данных возвращается, если после извлечения требуется фильтрация, сортировка или разбиение данных на страницы или если необходимо сохранить кэш. Напротив, объект для чтения данных используется, чтобы просто возвратить данные, и элемент управления на странице используется только для отображения этих данных. Например, объект чтения данных идеально подходит для возврата данных, которые необходимо отобразить в элементе управления ListBox, DropDownList или GridView, в котором список результатов отображается в формате только для чтения.

Кэширование с помощью элемента управления SqlDataSource

Элемент управления SqlDataSource можно использовать для кэширования извлеченных данных, что позволяет улучшить производительность приложений за счет предотвращения ресурсоемких запросов. Кэширование целесообразно применять в любой ситуации, в которой данные изменяются не часто, а кэшированные результаты достаточно малы по объему и не используют слишком большой объем системной памяти.

Кэширование по умолчанию не включено. Можно включить его, присвоив параметру EnableCaching значение true. Механизм кэширования основан на времени. Можно указать в качестве значения свойства CacheDuration число секунд для кэширования данных. Элемент управления источником данных сохраняет отдельную запись кэша для каждой комбинации подключения, команды select, параметров select и параметров кэширования.

Элемент управления SqlDataSource также может пользоваться функцией зависимости кэша SQL Server (если она доступна в используемой версии SQL Server). Эта возможность позволяет указать, что данные в кэше сохраняются, пока SQL Server не сообщит об изменении в указанной таблице. Этот тип кэширования позволяет повысить производительность операции обращения к данным в веб-приложениях, обеспечивая минимальный уровень извлечения данных только в тех случаях, когда необходимо получить обновленные данные.

Дополнительные сведения см. в разделе Кэширование данных с помощью элемента управления SqlDataSource.

Фильтрация с помощью элемента управления SqlDataSource

Если для элемента управления SqlDataSource включено кэширование, а в качестве формата данных, возвращаемых запросом SELECT, указан набор данных, то можно также фильтровать данные, не выполняя повторный запрос. Элемент управления SqlDataSource поддерживает свойство FilterExpression, позволяющее указать критерии выбора, применяемые к данным, обслуживаемым элементом управления источником данных. Можно также параметризовать критерий фильтра, создав специальные объекты FilterParameters, подставляющие значения в критерий фильтра во время выполнения.

Сортировка с помощью элемента управления SqlDataSource

Элемент управления SqlDataSource поддерживает запросы сортировки от связанного элемента управления, когда DataSourceMode присвоено значение DataSet. Дополнительные сведения см. в разделе Сортировка данных с помощью элементов управления источниками данных.

К началу

В следующей таблице перечислены основные классы, связанные с элементом управления SqlDataSource.

Член

Описание

SqlDataSource

Основной класс для элемента управления.

К началу

Показ: