Извлечение данных с помощью серверного веб-элемента управления AccessDataSource
Обновлен: Ноябрь 2007
Элемент управления AccessDataSource позволяет извлекать данные из базы данных Microsoft Access (MDB-файл). Затем можно отобразить данные в элементах управления с привязкой к данным, таких как GridView, FormView, и DetailsView.
Элемент управления AccessDataSource наследует класс SqlDataSource и заменяет свойство ConnectionString свойством DataFile, чтобы сделать подключение к базе данных Microsoft Access более удобным. Элемент управления AccessDataSource использует поставщик System.Data.OleDb для подключения к базе данных Access с помощью поставщика OLE DB Microsoft.Jet.OLEDB.4.0.
Подключение к базе данных с помощью элемента управления AccessDataSource
Элемент управления AccessDataSource подключается к файлу базы данных Microsoft Access (MDB-файл), определенному в свойстве DataFile. Можно присвоить свойству DataFile UNC-путь, указывающий на файл базы данных Access. Следующий пример демонстрирует, как использовать относительный путь от корня для идентификации базы данных Access, расположенной в папке App_Data текущего веб-приложения.
<asp:AccessDataSource
id="AccessDataSource1"
DataFile="~/App_Data/Northwind.mdb"
runat="server"
SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees">
</asp:AccessDataSource>
Если файл базы данных Access хранится вместе с веб-приложением, то рекомендуется хранить его в папке App_Data, чтобы ограничить доступ к нему. ASP.NET не возвращает файлы из папки App_Data при непосредственном запросе. Чтобы хранить файлы базы данных Access в папке App_Data, удостоверению процесса ASP.NET должны быть предоставлены права доступа на запись и чтение. Дополнительные сведения об удостоверении процесса ASP.NET см. в разделе Настройка удостоверения процесса ASP.NET.
Элемент управления AccessDataSource присваивает свойству ProviderName базового класса SqlDataSource поставщик System.Data.OleDb и выполняет подключение с помощью поставщика OLE DB Microsoft.Jet.OLEDB.4.0. Нельзя присвоить значение свойству ProviderName или ConnectionString элемента управления AccessDataSource.
![]() |
---|
Элемент управления AccessDataSource не выполнит подключение к базе данных Access, которая защищена паролем; для извлечения данных из защищенной паролем базы данных Access воспользуйтесь элементом управления SqlDataSource. |
Выбор данных с помощью элемента управления AccessDataSource
Можно задать запрос SQL для элемента управления AccessDataSource, чтобы выполнить его, задав свойство SelectCommand, как показано в следующем примере кода.
<form id="form1" runat="server">
<asp:AccessDataSource
id="EmployeesAccessDataSource"
DataFile="~/App_Data/Northwind.mdb"
runat="server"
SelectCommand="SELECT EmployeeID, FirstName, LastName FROM Employees" />
<asp:GridView
id="EmployeesGridView"
runat="server"
AutoGenerateColumns="True"
DataSourceid="EmployeesAccessDataSource" />
<form id="form1" runat="server">
<asp:AccessDataSource
id="EmployeesAccessDataSource"
DataFile="~/App_Data/Northwind.mdb"
runat="server"
SelectCommand="SELECT EmployeeID, FirstName, LastName FROM Employees" />
<asp:GridView
id="EmployeesGridView"
runat="server"
AutoGenerateColumns="True"
DataSourceid="EmployeesAccessDataSource" />
Вернуть результаты запроса к Microsoft Access можно, присвоив свойству SelectCommandType элемента управления SelectCommand значение StoredProcedure, как показано в следующем примере кода.
<asp:AccessDataSource
id="InvoiceAccessDataSource"
DataFile="~/App_Data/Northwind.mdb"
runat="server"
SelectCommand="[Employee Sales By Country]"
SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter Name="Beginning Date" Type="DateTime" defaultValue="1/1/1997" />
<asp:Parameter Name="Ending Date" Type="DateTime" defaultValue="1/31/1997" />
</SelectParameters>
</asp:AccessDataSource>
<asp:GridView
id="InvoiceGridView"
runat="server"
AutoGenerateColumns="True"
DataSourceid="InvoiceAccessDataSource" />
<asp:AccessDataSource
id="InvoiceAccessDataSource"
DataFile="~/App_Data/Northwind.mdb"
runat="server"
SelectCommand="[Employee Sales By Country]"
SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:Parameter Name="Beginning Date" Type="DateTime" defaultValue="1/1/1997" />
<asp:Parameter Name="Ending Date" Type="DateTime" defaultValue="1/31/1997" />
</SelectParameters>
</asp:AccessDataSource>
<asp:GridView
id="InvoiceGridView"
runat="server"
AutoGenerateColumns="True"
DataSourceid="InvoiceAccessDataSource" />
Сведения об изменении данных с помощью элемента управления AccessDataSource см. в разделе Изменение данных с помощью элемента управления SqlDataSource; этот раздел касается работы с элементом управления AccessDataSource, поскольку он наследует функции элемента управления SqlDataSource и неявно использует поставщик System.Data.OleDb.
Использование параметров с элементом управления AccessDataSource
Можно использовать параметризованные запросы для команд и предоставлять параметры во время выполнения. Кроме этого, при вызове запроса Microsoft Access можно указать параметры во время выполнения. (для вызова запроса Microsoft Access задается свойства типа команды для команды StoredProcedure). Дополнительные сведения см. в разделе Использование параметров с элементами управления источников данных.
Поскольку элемент управления AccessDataSource расширяет класс SqlDataSource и использует поставщик System.Data.OleDb, параметры-местозаполнители задаются с помощью символа-местозаполнителя («?»). Поставщик System.Data.OleDb не поддерживает именованные параметры; вместо этого значения параметров применяются в том порядке, в котором они указаны в коллекции параметров. Необходимо убедиться, что порядок параметров в коллекции соответствует порядку параметров-местозаполнителей в инструкции SQL или запросе Microsoft Access. Дополнительные сведения и примеры см. в разделе Использование параметров с элементом управления SqlDataSource.