次の方法で共有


AccessDataSource Web サーバー コントロールによるデータの取得

更新 : 2007 年 11 月

AccessDataSource コントロールを使用すると、Microsoft Access データベース (.mdb ファイル) からデータを取得できます。GridViewFormViewDetailsView の各コントロールなどのデータ バインド コントロールにそのデータを表示できます。

AccessDataSource コントロールは、SqlDataSource クラスを継承し、ConnectionString プロパティを DataFile プロパティで置き換えて、Microsoft Access データベースへの接続を強化しています。AccessDataSource コントロールは、System.Data.OleDb プロバイダを使用して Access データベースに接続し、OLE DB プロバイダは Microsoft.Jet.OLEDB.4.0 を使用します。

AccessDataSource コントロールによるデータベースへの接続

AccessDataSource コントロールは、DataFile プロパティで指定される Microsoft Access データベース ファイル (.mdb ファイル) に接続します。DataFile プロパティは、Access データベース ファイルを指す UNC (Universal Naming Convention) パスに設定できます。ルートに対する相対パスを使用して、現在の 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 フォルダに格納することをお勧めします。App_Data フォルダのファイルを直接要求しても、ASP.NET はファイルを返しません。ASP.NET プロセス ID には、App_Data フォルダに格納されている Access データベースに対する読み取りと書き込みのファイル アクセス許可が必要です。ASP.NET プロセス ID については、「ASP.NET プロセス ID の構成」を参照してください。

AccessDataSource コントロールは、SqlDataSource 基本クラスの ProviderName プロパティを System.Data.OleDb プロバイダに設定し、Microsoft.Jet.OLEDB.4.0 OLE DB プロバイダを使用して接続します。AccessDataSource コントロールの ProviderName プロパティまたは ConnectionString プロパティを設定することはできません。

8e5545e1.alert_note(ja-jp,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" />

次のコード例に示すように、SelectCommandSelectCommandType プロパティを StoredProcedure に設定すると、Microsoft Access クエリから結果を返すことができます。

<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 コントロールによるデータの選択