データ ソース コントロールは、データ バインドされたコントロールと対話し、複雑なデータ バインディング プロセスを非表示にします。これらは、データ バインド コントロールにデータを提供し、挿入、削除、更新などの操作の実行をサポートするツールです。
各データ ソース コントロールは、データベース、XML ファイル、またはカスタム クラスに関連付けられた特別なデータ プロバイダーをラップし、次のことに役立ちます。
接続を管理する
データの選択
ページング、キャッシュなどのプレゼンテーションの側面を管理します。
データを操作する
ASP.NET では、SQL サーバー、ODBC または OLE DB サーバー、XML ファイル、ビジネス オブジェクトからデータを取得するために使用できるデータ ソース コントロールが多数あります。
データ型に基づいて、これらのコントロールは次の 2 つのカテゴリに分類できます。
階層化されたデータソース制御
テーブルベースのデータソース制御
階層データのデータ ソース コントロールは次のとおりです。
XMLDataSource - スキーマ情報の有無にかかわらず、XML ファイルと文字列をバインドできます。
SiteMapDataSource - サイトマップ情報を提供するプロバイダーをバインドできます。
表形式データに使用されるデータ ソース コントロールは次のとおりです。
データソース制御 | 説明する |
---|---|
SQLデータソース | これは、OLEDB や QDBC を通じて利用できるデータ ソースなどの SQL データを返す ADO.NET データ プロバイダーへの接続を表します。 |
オブジェクトデータソース | データを返すカスタム .Net ビジネス オブジェクトをバインドできます。 |
リンクデータソース | これにより、Linq-t0-SQL クエリの結果をバインドできます。 (ASP.NET 3.5でのみサポート) |
データソースへのアクセス | これは、Microsoft Access データベースへの接続を表します。 |
データ ソース ビューは DataSourceView クラスのオブジェクトであり、並べ替え、フィルター処理などのさまざまなデータ操作用に設計されたカスタム データ ビューを表します。
DataSourceView クラスは、すべてのデータ ソース ビュー クラスの基本クラスとして使用され、データ ソース コントロールのパフォーマンスを定義します。
次の表に、DataSourceView クラスのプロパティを示します。
財産 | 説明する |
---|---|
削除できます | 潜在的なデータ ソースの削除が許可されるかどうかを示します。 |
挿入できます | 潜在的なデータ ソースの挿入を許可するかどうかを示します。 |
キャンページ | 潜在的なデータ ソースのページングが許可されるかどうかを示します。 |
CanRetrieveTotalRowCount | 合計行情報を取得できるかどうかを示します。 |
キャンソート | データをソートできるかどうかを示します。 |
更新できる | 潜在的なデータ ソースで更新が許可されているかどうかを示します。 |
イベント | データ ソース ビューによって表されるイベント ハンドラーのリストを取得します。 |
名前 | ビューの名前。 |
次の表に、DataSourceView クラスのメソッドを示します。
方法 | 説明する |
---|---|
実行できる | 指定されたコマンドが実行可能かどうかを判定します。 |
コマンドの実行 | 指定されたコマンドを実行します。 |
削除の実行 | DataSourceView オブジェクトによって表されるデータ リストに対して削除操作を実行します。 |
実行挿入 | DataSourceView オブジェクトによって表されるデータ リストに対して挿入操作を実行します。 |
実行選択 | 基盤となるデータ ストアからデータのリストを取得します。 |
更新の実行 | DataSourceView オブジェクトによって表されるデータのリストに対して更新操作を実行します。 |
消去 | ビューに関連付けられたデータに対して削除操作を実行します。 |
入れる | ビューに関連付けられたデータに対して挿入操作を実行します。 |
選択 | クエリされたデータを返します。 |
アップデート | ビューに関連付けられたデータに対して更新操作を実行します。 |
OnDataSourceViewChanged | DataSourceViewChanged イベントを発生させます。 |
UnsupportedCapabilitiesError を発生させる | ExecuteSelect 操作で必要な機能とビューでサポートされる機能を比較するために、RaiseUnsupportedCapabilitiesError メソッドによって呼び出されます。 |
SqlDataSource コントロールは、SQL Server や Oracle データベースなどの関連データベースへの接続、または OLEDB や Open Database Connectivity (ODBC) 経由でアクセス可能なデータへの接続を表します。データ接続は、ConnectionString と ProviderName という 2 つの重要なプロパティによって完了します。
次のコード スニペットは、コントロールの基本的な構文を示しています。
<asp:SqlDataSource runat="server" ID="MySqlSource" ProviderName='<%$ ConnectionStrings:LocalNWind.ProviderName %>' ConnectionString='<%$ ConnectionStrings:LocalNWind %>' SelectionCommand= "SELECT * FROM EMPLOYEES" /><asp:GridView ID="GridView1" runat="server" DataSourceID="MySqlSource" />
基になるデータに対するさまざまなデータ操作の構成は、データ ソース コントロールのさまざまなプロパティ (プロパティ セット) に応じて異なります。
次の表は、コントロールのプログラミング インターフェイスを提供する SqlDataSource コントロールの関連プロパティ セットを示しています。
属性グループ | 説明する |
---|---|
削除コマンド、削除パラメータ、削除コマンドタイプ | 基になるデータで削除する SQL ステートメント、パラメーター、行のタイプを取得または設定します。 |
フィルタ式、フィルタパラメータ | データフィルタリング文字列とパラメータを取得および設定します。 |
挿入コマンド、挿入パラメータ、挿入コマンド タイプ | SQL ステートメント、パラメーター、および基になるデータに挿入される行のタイプを取得または設定します。 |
SelectCommand、SelectParameters、SelectCommandType | 基になるデータから取得される SQL ステートメント、パラメーター、および行のタイプを取得または設定します。 |
ソートパラメータ名 | データを並べ替えるためにコマンド ストアド プロシージャによって使用される入力パラメーターの名前を取得または設定します。 |
UpdateCommand、UpdateParameters、UpdateCommandType | SQL ステートメント、パラメーター、および基になるデータで更新される行のタイプを取得または設定します。 |
次のコード スニペットは、データ操作の実行に使用できるデータ ソース コントロールを示しています。
<asp:SqlDataSource runat="server" ID= "MySqlSource" ProviderName='<%$ ConnectionStrings:LocalNWind.ProviderName %>' ConnectionString=' <%$ ConnectionStrings:LocalNWind %>' SelectCommand= "SELECT * FROM EMPLOYEES" UpdateCommand= "UPDATE EMPLOYEES SET LASTNAME=@lame" DeleteCommand= "DELETE FROM EMPLOYEES WHERE EMPLOYEEID=@eid" FilterExpression= "EMPLOYEEID > 10"> ..... .....</asp:SqlDataSource>
ObjectDataSource コントロールを使用すると、ユーザー定義クラスがメソッドの出力をデータ バインドされたコントロールに接続できるようになります。このクラスのプログラミング インターフェイスは、SqlDataSource コントロールとほぼ同じです。
顧客オブジェクトのバインドに関する 2 つの重要な側面は次のとおりです。
バインド可能なクラスには、デフォルトのコンストラクターがあり、ステートレスであり、選択、更新、挿入、および削除のセマンティクスにマップするメソッドが必要です。
オブジェクトは一度に 1 項目ずつ更新する必要があり、バッチ操作はサポートされていません。
このコントロールの使用例を見てみましょう。 Student クラスは、データ ソース オブジェクトで使用されるクラスです。このクラスには、学生 ID、名前、都市の 3 つの属性があります。これには、デフォルトのコンストラクターと、データを取得する GetStudents メソッドがあります。
学生クラス:
public class Student{ public int StudentID { get; set; } public string Name { get; set; } public string City { get; set; } public Student() { } public DataSet GetStudents() { DataSet ds = new DataSet(); DataTable dt = new DataTable("Students"); dt.Columns.Add("StudentID", typeof(System.Int32)); dt.Columns.Add("StudentName", typeof(System.String)); dt.Columns.Add("StudentCity", typeof(System.String)); dt.Rows.Add(new object[] { 1, "MH Kabir", "Calcutta" }); dt.Rows.Add(new object[] { 2, "Ayan J. Sarkar", "Calcutta" }); ds.Tables.Add(dt); return ds; }}
次の手順に従って、ワイヤをデータ ソース オブジェクトにバインドし、データを取得します。
新しい Web ページを作成します。
クラス (Student.cs) を右クリックしてソリューション エクスプローラー プロジェクトに追加し、クラス テンプレートを追加し、その中に上記のコードを配置します。
アプリケーションがクラスへの参照を使用できるようにメソッドを確立します。
データ ソース コントロール オブジェクトを Web フォームに配置します。
オブジェクトを選択してデータ ソースを構成します。
さまざまなデータ操作に応じてデータ メソッドを選択します。この例では、メソッドは 1 つだけです。
グリッド ビューなどのデータ バインド コントロールをページ上に配置し、データ ソース オブジェクトを潜在的なデータ ソースとして選択します。
この段階で、デザイン ビューは次のようになります。
プロジェクトを実行すると、学生クラスのハードコードされた祖先が取得されます。
AccessDataSource コントロールは、Access データベースへの接続を表します。これは SqlDataSource コントロールに基づいており、よりシンプルなプログラミング インターフェイスを提供します。次のコード スニペットは、データ ソースの基本的な構文を示します。
<asp:AccessDataSource ID="AccessDataSource1 runat="server" DataFile="~/App_Data/ASPDotNetStepByStep.mdb" SelectCommand="SELECT * FROM [DotNetReferences]"></asp:AccessDataSource>
AccessDataSource コントロールは、データベースを読み取り専用モードで開きます。ただし、挿入、更新、または削除操作を実行するために使用することもできます。これは、ADO.NET コマンドとパラメータ セットを使用して実現されます。
Access データベースはプレーン テキストであり、デフォルトの ASP.NET アプリケーション アカウントがデータベース ファイルへの書き込み権限を持っている可能性があるため、ASP.NET アプリケーション内の Access データベースの更新には問題があります。