使用 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 資料庫檔案的通用命名慣例 (Universal Naming Convention,UNC) 路徑。下列程式碼範例示範了如何使用根目錄相關路徑,識別位於目前 Web 應用程式 App_Data 資料夾中的 Access 資料庫。

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

如果您將 Access 資料庫檔案與 Web 應用程式儲存在一起,建議您將它儲存在 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 屬性。

注意事項:

AccessDataSource 不會連接至有密碼保護的 Access 資料庫,若要從有密碼保護的 Access 資料庫擷取資料,請使用 SqlDataSource 控制項。

使用 AccessDataSource 控制項選取資料

您可以藉由設定 AccessDataSource 控制項的 SelectCommand 屬性,指定要執行的 SQL 查詢,如下列程式碼範例所示。

<form id="form1" >
  <asp:AccessDataSource
    id="EmployeesAccessDataSource"
    DataFile="~/App_Data/Northwind.mdb"
    
    SelectCommand="SELECT EmployeeID, FirstName, LastName FROM Employees" />

  <asp:GridView
    id="EmployeesGridView"
    
    AutoGenerateColumns="True"
    DataSourceid="EmployeesAccessDataSource" />
<form id="form1" >
  <asp:AccessDataSource
    id="EmployeesAccessDataSource"
    DataFile="~/App_Data/Northwind.mdb"
    
    SelectCommand="SELECT EmployeeID, FirstName, LastName FROM Employees" />

  <asp:GridView
    id="EmployeesGridView"
    
    AutoGenerateColumns="True"
    DataSourceid="EmployeesAccessDataSource" />

SelectCommandSelectCommandType 屬性設定為 StoredProcedure,以便從 Microsoft Access 查詢傳回結果,如下列程式碼範例所示。

<asp:AccessDataSource
  id="InvoiceAccessDataSource"
  DataFile="~/App_Data/Northwind.mdb"
  
  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"
  
  AutoGenerateColumns="True"
  DataSourceid="InvoiceAccessDataSource" />
<asp:AccessDataSource
  id="InvoiceAccessDataSource"
  DataFile="~/App_Data/Northwind.mdb"
  
  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"
  
  AutoGenerateColumns="True"
  DataSourceid="InvoiceAccessDataSource" />

如需使用 AccessDataSource 控制項修改資料的資訊,請參閱使用 SqlDataSource 控制項修改資料。因為控制項會繼承 SqlDataSource 控制項的功能,並且隱含地使用 System.Data.OleDb 提供者,所以這個主題適用於使用 AccessDataSource 控制項。

搭配 AccessDataSource 控制項使用參數

您可以使用命令的參數型查詢,並且在執行階段提供參數。此外,當呼叫 Microsoft Access 查詢時可以在執行階段指定參數 (若要呼叫 Microsoft Access 查詢,可以將命令的命令類型屬性設定為 StoredProcedure)。如需詳細資訊,請參閱使用含有資料來源控制項的參數

因為 AccessDataSource 控制項會擴充 SqlDataSource 類別並且使用 System.Data.OleDb 提供者,所以要使用 "?" 預留位置字元指定參數預留位置。System.Data.OleDb 提供者並不支援具名參數,而是根據在參數集合中指定的順序套用參數值。您必須確認參數集合中的參數順序,符合 SQL 陳述式或 Microsoft Access 查詢中的參數預留位置順序。如需詳細資訊與範例,請參閱使用參數和 SqlDataSource 控制項

請參閱

概念

使用 SqlDataSource 控制項選取資料