I.概要
-
前のC#操作データベースのセクションでは、SqlCommandオブジェクトのExecuteNonQueryメソッドを使用して非クエリSQLステートメントを実行し、データテーブルの更新操作を実行する方法を紹介しました。DataSetオブジェクトを使用すると、同じ機能を実行してデータアクセス時間を節約できます。
-
各DataSetは複数のDataTableで構成されており、DataSet内のデータの更新は、実際にはDataTableを更新することによって実現されます。
-
各DataTableオブジェクトは、行(DataRow)と列(DataColumn)で構成されます。次に、DataRowクラスとDataColumnクラスの使用について説明します。
<!-もっと->
2つのDataRowクラス
DataRowクラスは、データテーブルの行を表し、このクラスを介してデータテーブルの行を直接追加、変更、および削除できます。
2.1DataRowで一般的に使用される属性とメソッド
属性またはメソッド | 説明 |
---|---|
テーブル | プロパティ、DataRowオブジェクトによって作成されたDataTableの名前を設定します |
RowState | 現在の行のステータスを取得するプロパティ |
HasErrors | 現在の行にエラーがあるかどうかを取得するプロパティ |
AcceptChanges() | DaaTableの値を更新するメソッド |
RejectChanges() | Datableの値の更新を元に戻す方法 |
Delete() | メソッド、削除する現在の行をマークし、AcceptChangesメソッドの実装でデータテーブルを更新します |
2.2DataRowの作成
DataRowクラスには構築メソッドが提供されていません。DataTableのNewRowメソッドを使用してDataRowクラスのオブジェクトを作成する必要があります。具体的なステートメントは次のとおりです。
<span style="color:#333333">DataTable dt=new DataTable();
DataRow dr=dt.NewRow();</span>
このように、drは新しく追加された行であり、データの各行は複数の列で構成されます。テーブル構造がDataTableオブジェクトにすでに存在する場合、直接使用されるdr[编号或列名]=值
フォームはテーブルの列に値を割り当てることができます。
3つのDataColumnクラス
DataColumnクラスは、データテーブルの列オブジェクトです。データベースのテーブルの列定義と同様に、列名とデータタイプを設定できます。
3.1DataColumnの構築方法
工法 | 説明 |
---|---|
DataColumn() | パラメータの構築方法はありません |
DataColumn(string columnName) | パラメータを持つコンストラクタ、columnNameパラメータは列名を表します |
DataColumn(string columnName、Type dataType) | パラメータを使用した構築メソッド、columnNameパラメータは列の名前を表し、dataTypeパラメータは列のデータタイプを表します |
3.2DataColumnオブジェクトの一般的に使用される属性
属性 | 説明 |
---|---|
ColumnName | DataColumnオブジェクトの列名を設定するプロパティ |
データ・タイプ | DataColumnオブジェクトのデータタイプを設定するプロパティ |
MaxLength | DataColumnオブジェクト値の最大長を設定するプロパティ |
キャプション | プロパティ。テーブルの列のエイリアスを設定するのと同様に、表示時にDataColumnオブジェクトの列名を設定します。 |
DefaultValue | 、DataColumnオブジェクトのデフォルト値を設定します |
自動増加 | プロパティ、SQL ServerのデータテーブルのID列と同様に、DataColumnオブジェクトを自動拡張列として設定します |
AutoIncrementSeed | AutoIncrementプロパティと組み合わせて使用されるプロパティで、自動インクリメント列の初期値を設定するために使用されます |
AutoIncrementStep | AutoIncrementプロパティと組み合わせて使用され、auto-increment列の各増加の値を設定します。 |
ユニーク | プロパティ、DataColumnオブジェクトの値を一意に設定します。これは、データテーブルの一意の制約と同様です。 |
AllowDBNull | DataColumnオブジェクトの値を空にすることができるかどうかを設定するプロパティ |
4つの例DataRowクラス、DataColumnクラス、およびDataTableクラスを使用して専門家情報テーブルを設計し、専門家をテーブルに追加して、すべての専門家情報をListBoxコントロールに表示します。
4.1分析
専門家情報テーブルの列には、専門家番号と専門家名が含まれています。専門家番号は自動成長列である必要があり、専門家名が唯一の値です。
4.2ページレイアウト
4.3コード
<span style="color:#333333">public partial class DataRowform : Form
{
//创建DataTable类的对象其表明为major
private DataTable dt = new DataTable("major");
//在构造方法中初始化DataTable对象,设置DataTable 中的列
public DataRowform()
{
InitializeComponent();
//创建专业编号列,列明为id 、数据类型为整型
DataColumn id = new DataColumn("id", typeof(int));
//设置id为自动增长列
id.AutoIncrement = true;
//设置id的初始值
id.AutoIncrementSeed = 1;
//设置id每次增长的值
id.AutoIncrementStep = 1;
//将id列加入到DataTable中
dt.Columns.Add(id);
//创建专业名称列,列明为name,数据类型为字符串类型
DataColumn name = new DataColumn("name", typeof(string));
//设置name列的值是唯一的
name.Unique = true;
//将name列加入到DataTable 对象中
dt.Columns.Add(name);
}
//添加按钮的单击事件
private void button1_Click(object sender, EventArgs e)
{
//向DataTable中天加一行,创建DataRow对象
DataRow dr = dt.NewRow();
//添加专业名称列的值
dr["name"] = textBox1.Text;
//将DataRow添加到DataTable对象中
dt.Rows.Add(dr);
//设置ListBox控件中的DataSource属性
listBox1.DataSource = dt;
//设置在listBox控件中显示的列
listBox1.DisplayMember = dt.Columns["name"].ToString();
}
}</span>
4.4エフェクト画像
4.5説明
-
上記の実行効果から、DataTableクラスの使用は、データベースでテーブルを直接設計するのと似ていますが、データはデータベースに保存されないことがわかります。
-
DataTableクラスを使用すると、テーブルの設計および操作と同じ機能を実行できるため、DataTableを更新してデータベース内のデータテーブルを更新する効果がより効果的になり、データをオフラインで保存できます。