C#.NETのサンプルコードを掲載しています。
      
DataSetの構造
DataSetはどのような構造をしてるのでしょうか?
DataSetの中にはDataTableがあり、DataTableはDataRowとDataColumnで構成されてます。
Dataという単語が並び混乱しそうですね。

DataSetの構成はExcelファイルの構成に似ていると思うので、Excelを例にして説明します。
Excelをよく知らない人はごめんなさい。
Excelファイルを開くとシートがあります。"Sheet1"、"Sheet2"、"Sheet3"などです。
各シートには行と列が存在します。
行は"1"、"2"、"3"…"65536"行まであり、列は"A"、"B"、"C"…"IV"の256列あります。

ExcelのブックがDataSetにあたり、
シートがDataTable、行がDataRow、列がDataColumnです。
1つのExcelファイル(DataSet)の中に複数のシート(DataTable)があり、そのシートの中は
行(DataRow)と列(DataColumn)で構成されてます。

DataSetの初期化
Excelファイルとよく似ていると「DataSetの構造」で記したのですが、
DataSetを初期化(Excelファイルを開く)したときの動きが違います。
Excelファイルは新規作成して開くと既に"Sheet1"、"Sheet2"、"Sheet3"が用意されてます。
(設定によっては異なります)
DataSetは初期化して、中身を見てもDataTableは1つも用意されてません。

テストコード
1
DataSet ds = new DataSet();

イメージ的にはこんな感じです。

シートがないのでこれではデータの書き込みや読み込みができません。
DataSetを初期化したら次はExcelのシートにあたるDataTableを追加する必要があります。

テストコード
1
2
3
4
5
DataSet ds = new DataSet();
DataTable dt = new DataTable();

// DataSetにdtを追加します。
ds.Tables.Add(dt);

イメージ的にはこんな感じです。

DataTableは追加されたのですが、なんと!セルがありません。
Excelではお目にかかれませんね。この状態だとやはり書き込みや読み込みができません。
次にすることはDataTableの構造の作成です。やたら手間がかかります。

テストコード
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
DataSet ds = new DataSet();
DataTable dt = new DataTable();

// 5列追加します。
dt.Columns.Add("A");
dt.Columns.Add("B");
dt.Columns.Add("C");
dt.Columns.Add("D");
dt.Columns.Add("E");

// 4行追加します。
for (int i = 0; i < 4; i++)
{
    DataRow row = dt.NewRow();
    dt.Rows.Add(row);
}

// DataSetにdtを追加します。
ds.Tables.Add(dt);

イメージ的にはこんな感じです。

これでやっと書き込みや読み込みが行えます。このサンプルでは4行、5列で作成しました。
それ以外のセルへ参照しようとしますとNGなので注意してください。
      
DataSet







Copyright (C) 2011 - 2017 猫の気ままなC#日記