ADO.NET は、フロントエンド コントロールとバックエンド データベース間のブリッジを提供します。 ADO.NET オブジェクトは、データ表示オブジェクトと対話するすべてのデータ アクセス操作とコントロールをカプセル化します。したがって、データ移動の詳細は隠蔽されます。
次の図は、ADO.NET オブジェクト全体を示しています。
データセットはデータベースのサブセットを表します。データベースへの永続的な接続はありません。データベースをアップグレードするには再接続が必要です。 DataSet には DataTable オブジェクトと DataRelation オブジェクトが含まれます。 DataRelation オブジェクトは 2 つのテーブル間の関係を表します。
次の表は、DataSet クラスの重要なプロパティの一部です。
財産 | 説明する |
---|---|
大文字と小文字を区別 | データテーブルと比較される文字列が大文字と小文字を区別するかどうかを示します。 |
容器 | コンポーネント用のスペースを取得します。 |
データセット名 | 既存のデータ コレクションの名前を取得または設定します。 |
デフォルトビューマネージャー | データ コレクション内のデータのビューを返します。 |
デザインモード | コンポーネントが設計モードであるかどうかを示します。 |
制約を強制する | ファイルをアップロードするときに制限が尊重されるかどうかを示します。 |
イベント | このコンポーネントに関連するイベント ハンドラーのリストを取得します。 |
拡張プロパティ | DataSet に関連するカスタム ユーザー情報のコレクションを取得します。 |
エラーあり | エラーがあるかどうかを示してください。 |
初期化されています | DataSet が初期化されているかどうかを示します。 |
ロケール | 文字列とテーブルを比較するために使用される情報を取得または設定します。 |
名前空間 | DataSet の名前空間を取得または設定します。 |
プレフィックス | 名前空間のエイリアスである XML プレフィックスを取得または設定します。 |
関係 | DataRelation オブジェクトのコレクションを返します。 |
テーブル | DataTable オブジェクトのコレクションを返します。 |
次の表に、DataSet クラスのいくつかの重要なメソッドを示します。
方法 | 説明する |
---|---|
変更を受け入れる | DataSet またはこのメソッドのロードによるすべての変更を受け入れます。 |
開始開始 | DataSet の初期化を開始します。この初期化は実行時に行われます。 |
クリア | データをクリアします。 |
クローン | すべての DataTable 構造、関係、制約を含む DataSet の構造のクローンを作成します。ただし、データはクローン化されません。 |
コピー | データと構造をコピーします。 |
CreateDataReader() | Tables コレクション内のテーブルが表示されるのと同じ順序で、各 DataTable の結果セットを含む DataTableReader を返します。 |
CreateDataReader(DataTable[]) | DataTable ごとに 1 つの結果セットを含む DataTableReader を返します。 |
EndInit | フォーム上で使用される、または別のコンポーネントによって使用される DataSet の初期化を終了します。初期化は実行時に行われます。 |
等しい(オブジェクト) | 指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 |
ファイナライズ | リソースを解放して追加のクリーンアップを実行します。 |
GetChanges | DataSet が読み込まれてから、または最後に AcceptChanges が呼び出されてからのすべての変更を含む DataSet のコピーを取得します。 |
GetChanges(DataRowState) | DataRowState でフィルター処理された DataSet のコピーを取得します。このコピーには、最後にロードされた以降、または AcceptChanges が呼び出された以降のデータ セットに対するすべての変更が含まれます。 |
GetDataSetSchema | DataSet の XmlSchemaSet のコピーを取得します。 |
GetObjectData | シリアル化された情報オブジェクトに、DataSet をシリアル化するために必要なデータを入力します。 |
GetType | 現在のインスタンスのタイプを取得します。 |
XMLの取得 | DataSet に格納されているデータの XML 表現を返します。 |
XMLスキーマの取得 | DataSet に格納されているデータの XML 表現の XML スキーマを返します。 |
HasChanges() | 新しい行、削除された行、または変更された行など、DataSet が変更されたかどうかを示す値を取得します。 |
HasChanges(DataRowState) | DataSet に DataRowState でフィルターされた変更 (新しい行、削除された行、または変更された行など) があるかどうかを示す値を取得します。 |
IsBinarySerialized | DataSet のシリアル化された表現の形式を確認してください。 |
Load(IDataReader、LoadOption、DataTable[]) | 提供された IDataReader を使用してデータ ソースからの値を DataSet に設定し、DataTable インスタンスの配列を使用してスキーマと名前空間の情報を提供します。 |
Load(IDataReader、LoadOption、String[]) | 提供された IDataReader を使用し、文字列配列を使用して DataSet 内のテーブルの名前を指定し、データ ソースからの値を DataSet に入力します。 |
マージ() | DataSet、DataTable、または DataRow オブジェクトの指定された配列を現在の DataSet または DataTable にマージします。このメソッドにはさまざまなオーバーロードがあります。 |
ReadXML() | XML スキーマとデータを DataSet に読み取ります。このメソッドにはさまざまなオーバーロードがあります。 |
ReadXMLSchema(0) | XML スキーマを DataSet に読み取ります。このメソッドにはさまざまなオーバーロードがあります。 |
変更の拒否 | DataSet の作成以降、または最後に DataSet.AcceptChanges が呼び出された以降に DataSet に加えられたすべての変更をロールバックします。 |
WriteXML() | DataSet から XML データとスキーマを書き込みます。このメソッドにはさまざまなオーバーロードがあります。 |
WriteXMLSchema() | DataSet から XML スキーマを書き込みます。このメソッドにはさまざまなオーバーロードがあります。 |
DataTable クラスはデータベース内のテーブルを表します。これには次の重要なプロパティがあります。 PrimaryKey プロパティを除くほとんどのプロパティは読み取り専用です。
財産 | 説明する |
---|---|
子関係 | この DataTable の子リレーションのコレクションを取得します。 |
コラム | このテーブルに属する列のコレクションを取得します。 |
制約 | このテーブルによって維持される制約のコレクションを取得します。 |
データセット | このテーブルが属する DataSet を取得します。 |
デフォルトビュー | フィルターされたビューまたはカーソル位置を含むテーブルのカスタム ビューを取得します。 |
親関係 | この DataTable の親関係のコレクションを取得します。 |
主キー | データテーブルの主キーとして機能する列の配列を取得または設定します。 |
行 | このテーブルに属する行のコレクションを取得します。 |
次の表に、DataTable クラスのいくつかの重要なメソッドを示します。
方法 | 説明する |
---|---|
変更を受け入れる | この DataSet が読み込まれてから、または AcceptChanges が最後に呼び出されてから、この DataSet に対して行われたすべての変更をコミットします。 |
クリア | すべてのテーブルからすべての行を削除して、DataSet からすべてのデータをクリアします。 |
GetChanges | 最後にロードされた以降、または AcceptChanges が呼び出された以降に DataSet に加えられたすべての変更を含む DataSet のコピーを取得します。 |
GetErrors | エラーを含む DataRow オブジェクトの配列を取得します。 |
インポート行 | DataRow を DataTable にコピーし、プロパティ設定と初期値と現在の値を保持します。 |
データ行のロード | 特定の行を検索して更新します。 一致する行が見つからない場合は、指定された値で新しい行が作成されます。 |
マージ | DataSet、DataTable、または DataRow オブジェクトの指定された配列を現在の DataSet または DataTable にマージします。 |
新しい行 | テーブルと同じスキーマを使用して新しい DataRow を作成します。 |
変更の拒否 | テーブルがロードされた以降、または AcceptChanges が最後に呼び出された以降にテーブルに加えられたすべての変更をロールバックします。 |
リセット | すべてのテーブルをクリアし、すべてのリレーションシップ、外部制約、およびテーブルを DataSet から削除します。 サブクラスは Reset をオーバーライドして、DataSet を元の状態に復元する必要があります。 |
選択 | DataRow オブジェクトの配列を取得します。 |
DataRow オブジェクトはテーブル内の行を表し、次の重要なプロパティを持ちます。
財産 | 説明する |
---|---|
エラーあり | エラーがあるかどうかを示します。 |
アイテム | 特定の列に格納されているデータを取得または設定します。 |
アイテム配列 | この行のすべての値を取得または設定します。 |
テーブル | 親テーブルを返します。 |
次の表に、DataRow クラスの重要なメソッドを示します。
方法 | 説明する |
---|---|
変更を受け入れる | このメソッドが呼び出されてからのすべての変更を適用します。 |
開始編集 | 編集作業を開始します。 |
キャンセル編集 | 編集操作をキャンセルします。 |
消去 | データ行を削除します。 |
編集終了 | 編集操作を終了します。 |
GetChildRows | この行の下位行を取得します。 |
GetParentRow | 親行を取得します。 |
GetParentRows | DataRow の親行を取得します。 |
変更の拒否 | AcceptChanges が呼び出された後に行われたすべての変更をロールバックします。 |
DataAdapter オブジェクトは、DataSet オブジェクトとデータベースの間の仲介者として機能します。これは、DataSet が複数のデータベースまたは他のデータ ソースからデータを取得するのに役立ちます。
DataReader オブジェクトは、DataSet と DataAdapter を組み合わせる代わりに使用できます。このオブジェクトは、データベース内のデータ レコードへの直接アクセスを提供します。これらのオブジェクトは、リストに入力してから切断するなど、読み取り専用アクセスにのみ適しています。
DbConnection オブジェクトは、データ ソースへの接続を表します。この接続は、異なるコマンド オブジェクト間で共有できます。 DbCommand オブジェクトは、データの取得または操作のためにデータベースに送信されるコマンドまたはストアド プロセスを表します。
これまでは、コンピューターのテーブルとデータベースを使用してきました。この場合、テーブルを作成し、列、行、データを追加し、GridView コントロールを使用してテーブルを表示します。
ソースファイルのコードは次のとおりです。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="createdatabase._Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title> Untitled Page </title> </head> <body> <form id="form1" runat="server"> <div> <asp:GridView ID="GridView1" runat="server"> </asp:GridView> </div> </form> </body></html>
ファイルのコードは次のとおりです。
namespace createdatabase{ public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataSet ds = CreateDataSet(); GridView1.DataSource = ds.Tables["Student"]; GridView1.DataBind(); } } private DataSet CreateDataSet() { //creating a DataSet object for tables DataSet dataset = new DataSet(); // creating the student table DataTable Students = CreateStudentTable(); dataset.Tables.Add(Students); return dataset; } private DataTable CreateStudentTable() { DataTable Students = new DataTable("Student"); // adding columns AddNewColumn(Students, "System.Int32", "StudentID"); AddNewColumn(Students, "System.String", "StudentName"); AddNewColumn(Students, "System.String", "StudentCity"); // adding rows AddNewRow(Students, 1, "MH Kabir", "Kolkata"); AddNewRow(Students, 1, "Shreya Sharma", "Delhi"); AddNewRow(Students, 1, "Rini Mukherjee", "Hyderabad"); AddNewRow(Students, 1, "Sunil Dubey", "Bikaner"); AddNewRow(Students, 1, "Rajat Mishra", "Patna"); return Students; } private void AddNewColumn(DataTable table, string columnType, string columnName) { DataColumn column = table.Columns.Add(columnName, Type.GetType(columnType)); } //adding data into the table private void AddNewRow(DataTable table, int id, string name, string city) { DataRow newrow = table.NewRow(); newrow["StudentID"] = id; newrow["StudentName"] = name; newrow["StudentCity"] = city; table.Rows.Add(newrow); } }}
プログラムを実行するときは、次の点に注意してください。
プログラムはまずデータ コレクションを作成し、次に GridView コントロールの DataBind() メソッドを使用してそれをバインドします。
Createdataset() メソッドは、新しい DataSet オブジェクトを作成し、追加のユーザー定義の CreateStudentTable() メソッドを呼び出してテーブルを作成し、それを DataSet のテーブル コレクションに追加するユーザー定義関数です。
CreateStudentTable() メソッドは、ユーザー定義の AddNewColumn() メソッドと AddNewRow() メソッドを呼び出して、テーブルの列と行を作成し、データを行に追加します。ページが実行されると、以下に示すようなテーブル行が返されます。