.NET開発者のためのブログメディア

【C#でADO.NETを動かす】DataSetとDataTableの操作方法
2019年12月13日
C#において、データベースなどから取得したデータをメモリ領域へ格納するのに必要なのがDataSetです。DataSetではテーブルを複数保持することができます。この複数保持できるテーブルひとつひとつがDataTableということになります。ここではDataTableの活用方法をメインに紹介します。
- SE
- なんだか「Data」って単語がいっぱい出てきてややこしいですよね……
- PL
- そうですね。DataSetの中にDataTableがあり、DataTableの中にDataRowとDataColumnがあります。イメージ的にはエクセルに例えるとわかりやすいかもしれません。DataSetがエクセルのブックにあたります。DataTableがその中にある各シートで、DataRowがシートの行、DataColumnがシートの列にそれぞれあたります。まずはこのイメージだけでもバッチリ掴むことでコーディングに入りやすいかもしれません。
目次
DataSetとDataTableを作成する方法
エクセルでは、初期状態でシートが準備されていますが、DataSetでは シートにあたるDataTableは最初から準備されていないので、まずはDataTableを準備します。また、DataTableを作成後、列と行にあたるDataRowとDataColumnもあわせて作成する必要があります。ここまで準備できてはじめてSQL Serverなどから取得したデータをDataTableに設定することができます。
- DataSetを作成(エクセルのブックのイメージ)
1DataSet ds = new DataSet();
- DataTableを作成(エクセルのシートのイメージ)
12DataTable dt = new DataTable();ds.Tables.Add(dt);
すると、以下のようにDataTableが作成されます。
- DataColumnを作成(エクセルの列のイメージ)
12345dt.Columns.Add("A");dt.Columns.Add("B");dt.Columns.Add("C");dt.Columns.Add("D");dt.Columns.Add("E");
すると、以下のようにDataColumnが作成されます。
- DataRowを作成(エクセルの行のイメージ)
123456// 6行追加します。for (int i = 0; i < 6; i++){DataRow row = dt.NewRow();dt.Rows.Add(row);}
すると、以下のようにDataRowが作成されます。
DataTableにデータを追加する方法
DataTableにデータを追加するサンプルソースです。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
DataSet ds = new DataSet();
DataTable dt = new DataTable();
dt.TableName = "Table1";
//まずは 列を定義します。今回は3列追加します。
dt.Columns.Add("商品番号");
dt.Columns.Add("商品名");
dt.Columns.Add("価格");
// 列まで作成できたらDataTable をDataSetに追加します。
ds.Tables.Add(dt);
// ループ処理にあたるfor文を活用し、行にデータを追加します。
for (int i = 0; i < 3; i++)
{
DataRow row = ds.Tables[0].NewRow();
if (i == 0){
row[0] = "001";
row[1] = "野菜";
row[2] = "100";
};
if (i == 1){
row[0] = "002";
row[1] = "果物";
row[2] = "200";
};
if (i == 2){
row[0] = "003";
row[1] = "お菓子";
row[2] = "300";
};
ds.Tables[0].Rows.Add(row);
}
|
実行結果は以下のような表となります。
[Table1]
商品番号 | 商品名 | 価格 |
001 | 野菜 | 100 |
002 | 果物 | 200 |
003 | お菓子 | 300 |
- SE
- エクセルにあてはめるとわかりやすいですね。まずはイメージを掴むことからチャレンジしてみます。
- PL
- そうですね。イメージを掴むことってとても大事ですよ。データをテーブルで保持して、その保持されているデータをループで回しながら編集するというロジックは、プログラミング言語が変わっても必ずといっていいほど出てきます。現場ですぐにコーディングできるように、今のうちから考え方だけでも自分のものにしておきましょう。
DataSetだけではデータは格納できません
DataSetはデータを格納するための入れ物ですが、DataSetだけではデータを格納することはできません。その中には必ずDataTableが必要ですし、DataColumnもDataRowもそれぞれ必要です。これら4つをワンセットとして覚えておきましょう。