使用 AccessDataSource Web 服务器控件检索数据

更新:2007 年 11 月

使用 AccessDataSource 控件可以检索 Microsoft Access 数据库(.mdb 文件)中的数据。然后,可以在数据绑定控件中显示数据,如 GridViewFormViewDetailsView 控件。

AccessDataSource 控件继承了 SqlDataSource 类并用 DataFile 属性替换了 ConnectionString 属性,这样更便于连接到 Microsoft Access 数据库。AccessDataSource 控件使用 System.Data.OleDb 提供程序连接到使用 Microsoft.Jet.OLEDB.4.0 OLE DB 提供程序的 Access 数据库。

使用 AccessDataSource 控件连接到数据库

AccessDataSource 控件连接到 DataFile 属性中标识的 Microsoft Access 数据库文件(.mdb 文件)。您可以将 DataFile 属性设置为指向 Access 数据库文件的通用命名约定 (UNC) 路径。下面的示例演示如何使用根相对路径标识位于当前 Web 应用程序的 App_Data 文件夹中的 Access 数据库。

  <asp:AccessDataSource
    id="AccessDataSource1"
    DataFile="~/App_Data/Northwind.mdb"
    runat="server"
    SelectCommand="SELECT EmployeeID, LastName, FirstName FROM Employees">
  </asp:AccessDataSource>

如果要在自己的 Web 应用程序中存储 Access 数据库文件,建议将它存储在 App_Data 文件夹中以保持数据库是私有的。ASP.NET 不允许在直接请求 App_Data 文件夹中的文件时,返回这些文件。ASP.NET 进程标识必须被授予读写存储在 App_Data 文件夹中的 Access 数据库的文件权限。有关 ASP.NET 进程标识的信息,请参见配置 ASP.NET 进程标识

AccessDataSource 控件将 SqlDataSource 基类的 ProviderName 属性设置为 System.Data.OleDb,然后使用 Microsoft.Jet.OLEDB.4.0 OLE DB 提供程序进行连接。不能设置 AccessDataSource 控件的 ProviderNameConnectionString 属性。

8e5545e1.alert_note(zh-cn,VS.90).gif说明:

AccessDataSource 不会连接到受密码保护的 Access 数据库;要从受密码保护的 Access 数据库中检索数据,请使用 SqlDataSource 控件。

使用 AccessDataSource 控件选择数据

您可以对要执行的 AccessDataSource 控件指定 SQL 查询,为此可如下面的代码示例所示设置该控件的 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 查询的结果,为此可如下面的代码示例所示将 SelectCommandSelectCommandType 属性设置为 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 控件使用参数

请参见

概念

使用 SqlDataSource 控件选择数据