AccessDataSource クラス
アセンブリ: System.Web (system.web.dll 内)
構文
解説
AccessDataSource クラスは、Microsoft Access データベースで使用するデータ ソース コントロールです。基本クラス SqlDataSource と同様に、AccessDataSource コントロールは、SQL クエリを使用してデータを取得します。
AccessDataSource コントロール固有の特性の 1 つは、ConnectionString プロパティを設定しないことです。DataFile プロパティを使用して、Access .mdb ファイルの位置を設定するだけでかまいません。データベースへの基になる接続は、AccessDataSource が行います。Access データベースを Web サイトの App_Data ディレクトリに配置し、相対パス (~/App_Data/Northwind.mdb など) でデータベースを参照する必要があります。このディレクトリに配置すると、クライアントの Web ブラウザで直接データ ファイルを要求しても、データ ファイルは提供されないため、データ ファイルのセキュリティが強化されます。
ConnectionString プロパティを設定することはできないため、AccessDataSource クラスは、ユーザー名またはパスワードで保護された Access データベースへの接続をサポートしていません。Access データベースをユーザー名またはパスワードで保護する場合は、完全な接続文字列を指定できるように、SqlDataSource コントロールを使用してデータベースに接続します。
データ バインド コントロールの DataSourceID プロパティを使用して、データ バインド コントロールを AccessDataSource にバインドします。データ バインド コントロールをデータ ソース コントロールにバインドする方法の詳細については、「データ ソース コントロールによるデータへのバインド」を参照してください。
AccessDataSource コントロールはデータベース製品ごとに固有であるため、常に同じプロバイダ (System.Data.OleDb .NET データ プロバイダ) を使用します。このため、ProviderName プロパティは読み取り専用です。System.Data.OleDb プロバイダを使用するときには、パラメータ化された SQL ステートメントのパラメータの順序が非常に重要となります。SelectCommand、UpdateCommand、InsertCommand、DeleteCommand の各プロパティで指定する SQL パラメータ クエリは、対応するパラメータ コレクション内の Parameter オブジェクトの順序と一致する必要があります。パラメータ コレクションが AccessDataSource で指定されていない場合、これらの操作に提供されるパラメータの順序は、基になる SQL ステートメントに表示される順序と一致する必要があります。詳細については、「SqlDataSource コントロールにおけるパラメータの使用」を参照してください。
AccessDataSource コントロールは、基本クラスがサポートするキャッシュ動作と同じ動作をサポートします。キャッシュを使用すると、AccessDataSource コントロールを使用するページのパフォーマンスが向上します。データ ソース キャッシュの詳細については、「データ ソース コントロールによるデータのキャッシュ」を参照してください。
AccessDataSource コントロールの機能を次の表に示します。
FilterExpression プロパティを Select メソッドの呼び出し時にデータをフィルタ処理するために使用するフィルタ式に設定します。 | |
AccessDataSource は、Access データベースでの直接ページング操作をサポートしていません。DataSourceMode プロパティが DataSet 値に設定されている場合、GridView などのデータ バインド コントロールは、AccessDataSource によって返される項目をページングできます。 | |
UpdateCommand プロパティをデータの更新に使用する SQL ステートメントに設定します。通常、このステートメントはパラメータ化されます。 | |
DeleteCommand プロパティをデータの削除に使用する SQL ステートメントに設定します。通常、このステートメントはパラメータ化されます。 | |
InsertCommand プロパティをデータの挿入に使用する SQL ステートメントに設定します。通常、このステートメントはパラメータ化されます。 | |
DataSourceMode プロパティを DataSet 値に設定し、EnableCaching プロパティを true に設定します。また、キャッシュ データに対して必要なキャッシュ動作に基づいて、CacheDuration プロパティと CacheExpirationPolicy プロパティを設定します。 |
すべてのデータ ソース コントロールと同様に、AccessDataSource コントロールは、厳密に型指定されたデータ ソース ビュー クラスに関連付けられています。AccessDataSource コントロールが SqlDataSource コントロールを拡張するのと同様に、AccessDataSourceView クラスは SqlDataSourceView クラスを拡張します。AccessDataSourceView クラスは、SqlDataSourceView のメソッドの一部をオーバーライドして、System.Data.OleDb .NET データ プロバイダを使用します。
AccessDataSource コントロールは視覚的に表示されません。このコントロールは、宣言によって永続化できるようにコントロールとして実装されます。また、オプションで状態管理に関与させることもできます。したがって、EnableTheming プロパティや SkinID プロパティなど、表示機能をサポートするプロパティは設定できません。
GridView コントロールを使用した表示および更新の一般的なシナリオを次のコード例に示します。SelectCommand プロパティが適切な SQL クエリに設定され、Northwind データベースのデータが GridView コントロールに表示されます。UpdateCommand プロパティも指定され、AutoGenerateEditButton プロパティが true に設定されているため、コードを追加せずにレコードの編集と更新を行うことができます。GridView コントロールは、UpdateParameters コレクションへのパラメータの追加を処理します。まず、GridView コントロールは、BoundField オブジェクトのパラメータ値を渡し、次に DataKeyNames プロパティで指定されたフィールドの値を渡します。GridView は Update メソッドを自動的に呼び出します。パラメータを順序付ける必要がある場合は、AccessDataSource で UpdateParameters コレクションを明示的に指定します。
<%@Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <BODY> <form runat="server"> <asp:accessdatasource id="AccessDataSource1" runat="server" datasourcemode="DataSet" datafile="~/App_Data/Northwind.mdb" selectcommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees" updatecommand="Update Employees SET FirstName=?,LastName=?,Title=? WHERE EmployeeID=@EmployeeID"> </asp:accessdatasource> <asp:gridview id="GridView1" runat="server" autogeneratecolumns="False" datakeynames="EmployeeID" autogenerateeditbutton="True" datasourceid="AccessDataSource1"> <columns> <asp:boundfield headertext="First Name" datafield="FirstName" /> <asp:boundfield headertext="Last Name" datafield="LastName" /> <asp:boundfield headertext="Title" datafield="Title" /> </columns> </asp:gridview> </form> </BODY> </HTML>
<%@Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <BODY> <form runat="server"> <asp:accessdatasource id="AccessDataSource1" runat="server" datasourcemode="DataSet" datafile="~/App_Data/Northwind.mdb" selectcommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees" updatecommand="Update Employees SET FirstName=?,LastName=?,Title=? WHERE EmployeeID=@EmployeeID"> </asp:accessdatasource> <asp:gridview id="GridView1" runat="server" autogeneratecolumns="False" datakeynames="EmployeeID" autogenerateeditbutton="True" datasourceid="AccessDataSource1"> <columns> <asp:boundfield headertext="First Name" datafield="FirstName" /> <asp:boundfield headertext="Last Name" datafield="LastName" /> <asp:boundfield headertext="Title" datafield="Title" /> </columns> </asp:gridview> </form> </BODY> </HTML>
<%@Page Language="VJ#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <BODY> <FORM runat="server"> <asp:AccessDataSource id="AccessDataSource1" runat="server" DataSourceMode="DataSet" DataFile="~/App_Data/Northwind.mdb" SelectCommand="SELECT EmployeeID,FirstName,LastName,Title FROM Employees" UpdateCommand="Update Employees SET FirstName=@FirstName,LastName=@LastName,Title=@Title WHERE EmployeeID=@EmployeeID"> </asp:AccessDataSource> <asp:GridView id="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="EmployeeID" AutoGenerateEditButton="True" DataSourceID="AccessDataSource1"> <Columns> <asp:BoundField HeaderText="First Name" DataField="FirstName" /> <asp:BoundField HeaderText="Last Name" DataField="LastName" /> <asp:BoundField HeaderText="Title" DataField="Title" /> </Columns> </asp:GridView> </FORM> </BODY> </HTML>
System.Web.UI.Control
System.Web.UI.DataSourceControl
System.Web.UI.WebControls.SqlDataSource
System.Web.UI.WebControls.AccessDataSource
プラットフォーム
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
- AccessDataSource クラスのページへのリンク