ADO.NET六(DataRow DataColumn)
3013 ワード
SqlCommandオブジェクトのExecuteNonQueryメソッドを使用して非クエリーSQL文を実行してデータテーブルの更新操作を実現し、DataSetオブジェクトを使用しても同じ機能を実現し、データアクセス時間を節約できることを説明しました.各DataSetは複数のDataTableで構成されており、DataSetのデータを更新することは実際にはDataTableを更新することによって実現される.各DataTableオブジェクトは、行(DataRow)と列(DataColumn)で構成されています.次に、DataRowクラスとDataColumnクラスの使用について説明します.
1)DataRowクラス
DataRowクラスは、データテーブルのローを表し、そのクラスを使用してデータテーブルのローの追加、変更、削除を直接行うことができます.DataRowクラスでよく使用される属性とメソッドを次の表に示します.
属性またはメソッド
説明
Table
属性、DataRowオブジェクトによって作成されるDataTableの名前を設定する
RowState
属性、現在の行のステータスの取得
HasErrors
属性、現在の行にエラーがないかどうかを取得
AcceptChanges()
メソッド、DataTableの値の更新
RejectChanges()
メソッド、DataTableの値の更新を取り消す
Delete()
メソッドは、現在のローが削除され、AcceptChangesメソッドが実行された後にデータテーブルが更新されます.
DataRowクラスには構築方法がありません.DataTableのNewRowメソッドでDataRowクラスのオブジェクトを作成する必要があります.具体的な文は次のとおりです. DataTable dt = new DataTable(); DataRow dr = dt.NewRow();
このようにdrは新しく追加された行であり、各行のデータは複数の列から構成されており、DataTableオブジェクトにテーブル構造が既に存在する場合は、
2)DataColumnクラス
DataColumnクラスは、データテーブル内のカラムオブジェクトであり、データベース内のテーブルのカラム定義と同様に、カラム名およびデータ型を設定できます.DataColumnクラスでよく使われる構造方法を下表に示します.
構築方法
説明
DataColumn()
パラメトリックコンストラクションメソッド
DataColumn(string columnName)
パラメータ付き構造方法columnNameパラメータはカラム名を表します
DataColumn(string columnName,Type dataType)
パラメータ付き構造方法columnNameパラメータはカラム名、dataTypeパラメータはカラムのデータ型を表します
DataColumnクラスには、次の表に示すように、DataColumnオブジェクトを設定するプロパティがあります.
ツールバーの
説明
ColumnName
属性、DataColumnオブジェクトの列名の設定
DataType
属性、DataColumnオブジェクトのデータ型の設定
MaxLength
属性、DataColumnオブジェクト値の最大長を設定する
Caption
属性:テーブルの列に別名を設定するのと同様に、DataColumnオブジェクトの表示時の列名を設定します.
DefaultValue
属性、DataColumnオブジェクトのデフォルト値の設定
AutoIncrement
属性、DataColumnオブジェクトを自動成長列として設定します.SQL Serverのデータテーブルの識別列と似ています.
AutoIncrementSeed
自動成長カラムの初期値を設定するためにAutoIncrementプロパティに関連付けられたプロパティ
AutoIncrementStep
自動成長列が増加するたびに増加する値を設定するプロパティ
Unique
データテーブルのユニークな制約と同様に、DataColumnオブジェクトの値をユニークに設定します.
AllowDBNull
属性、DataColumnオブジェクトの値が空に許可されているかどうかを設定します.
次に、DataRowクラスとDataColumnクラスの使用例を示します.
DataTable dt = new DataTable("myTable"); DataColumn dc1 = new DataColumn("id", typeof(int)); dc1.AutoIncrement = true; dc1.AutoIncrementSeed = 1; dc1.AutoIncrementStep = 1; dt.Columns.Add(dc1); DataColumn dc2 = new DataColumn("name", typeof(string)); dc2.Caption=「名前」; dc2.Unique = true; dt.Columns.Add(dc2);
DataRow dr1 = dt.NewRow(); dr1["name"] = "frank"; dt.Rows.Add(dr1); DataRow dr2 = dt.NewRow(); dr2["name"] = "jack"; dt.Rows.Add(dr2);
//列「name」は一意に制約されます.値「jack」は既に存在します. //DataRow dr3 = dt.NewRow(); //dr3["name"] = "jack"; //dt.Rows.Add(dr3); for (int i = 0; i < dt.Rows.Count; i++) { WriteLine($"id:{dt.Rows[i]["id"]}, name:{dt.Rows[i]["name"]}"); }
1)DataRowクラス
DataRowクラスは、データテーブルのローを表し、そのクラスを使用してデータテーブルのローの追加、変更、削除を直接行うことができます.DataRowクラスでよく使用される属性とメソッドを次の表に示します.
属性またはメソッド
説明
Table
属性、DataRowオブジェクトによって作成されるDataTableの名前を設定する
RowState
属性、現在の行のステータスの取得
HasErrors
属性、現在の行にエラーがないかどうかを取得
AcceptChanges()
メソッド、DataTableの値の更新
RejectChanges()
メソッド、DataTableの値の更新を取り消す
Delete()
メソッドは、現在のローが削除され、AcceptChangesメソッドが実行された後にデータテーブルが更新されます.
DataRowクラスには構築方法がありません.DataTableのNewRowメソッドでDataRowクラスのオブジェクトを作成する必要があります.具体的な文は次のとおりです.
このようにdrは新しく追加された行であり、各行のデータは複数の列から構成されており、DataTableオブジェクトにテーブル構造が既に存在する場合は、
dr[ ]=
の形式をそのまま用いてテーブル内の列に値を付与することができる.2)DataColumnクラス
DataColumnクラスは、データテーブル内のカラムオブジェクトであり、データベース内のテーブルのカラム定義と同様に、カラム名およびデータ型を設定できます.DataColumnクラスでよく使われる構造方法を下表に示します.
構築方法
説明
DataColumn()
パラメトリックコンストラクションメソッド
DataColumn(string columnName)
パラメータ付き構造方法columnNameパラメータはカラム名を表します
DataColumn(string columnName,Type dataType)
パラメータ付き構造方法columnNameパラメータはカラム名、dataTypeパラメータはカラムのデータ型を表します
DataColumnクラスには、次の表に示すように、DataColumnオブジェクトを設定するプロパティがあります.
ツールバーの
説明
ColumnName
属性、DataColumnオブジェクトの列名の設定
DataType
属性、DataColumnオブジェクトのデータ型の設定
MaxLength
属性、DataColumnオブジェクト値の最大長を設定する
Caption
属性:テーブルの列に別名を設定するのと同様に、DataColumnオブジェクトの表示時の列名を設定します.
DefaultValue
属性、DataColumnオブジェクトのデフォルト値の設定
AutoIncrement
属性、DataColumnオブジェクトを自動成長列として設定します.SQL Serverのデータテーブルの識別列と似ています.
AutoIncrementSeed
自動成長カラムの初期値を設定するためにAutoIncrementプロパティに関連付けられたプロパティ
AutoIncrementStep
自動成長列が増加するたびに増加する値を設定するプロパティ
Unique
データテーブルのユニークな制約と同様に、DataColumnオブジェクトの値をユニークに設定します.
AllowDBNull
属性、DataColumnオブジェクトの値が空に許可されているかどうかを設定します.
次に、DataRowクラスとDataColumnクラスの使用例を示します.
DataTable dt = new DataTable("myTable"); DataColumn dc1 = new DataColumn("id", typeof(int)); dc1.AutoIncrement = true; dc1.AutoIncrementSeed = 1; dc1.AutoIncrementStep = 1; dt.Columns.Add(dc1); DataColumn dc2 = new DataColumn("name", typeof(string)); dc2.Caption=「名前」; dc2.Unique = true; dt.Columns.Add(dc2);
DataRow dr1 = dt.NewRow(); dr1["name"] = "frank"; dt.Rows.Add(dr1); DataRow dr2 = dt.NewRow(); dr2["name"] = "jack"; dt.Rows.Add(dr2);
//列「name」は一意に制約されます.値「jack」は既に存在します. //DataRow dr3 = dt.NewRow(); //dr3["name"] = "jack"; //dt.Rows.Add(dr3); for (int i = 0; i < dt.Rows.Count; i++) { WriteLine($"id:{dt.Rows[i]["id"]}, name:{dt.Rows[i]["name"]}"); }