C#のDataTableを使う

DataTableとDataSetを使ってデータを扱う

C#のDataTableについての備忘録です。DataTable, DataSetクラスを使うとデータを表形式のように格納することができます。DataSetがデータベースのようなものを表し、DataTableはテーブルを表します。DataTableクラスには各データ行を表すDataRowと、列を表すDataColumnがあります。サンプルコードはコンソールアプリです。

DataTableでテーブルを作成しデータを表示する

基本的なテーブル作成の流れです。

//テーブル作成

DataTable dt = new DataTable(“students”);

//列(カラム)作成

dt.Columns.Add(“name”, typeof(string));

dt.Columns.Add(“number”, typeof(int));

dt.Columns.Add(“authenticity”, typeof(bool));

dt.Columns.Add(“description”, typeof(string));

//行(DataRow)作成

//1行目

DataRow dr;

dr = dt.NewRow();

dr[“name”] = “Taro”;

dr[“number”] = 1;

dr[“authenticity”] = true;

dr[“description”] = “Hello C#”;

//行をテーブルに追加

dt.Rows.Add(dr);

//2行目

dr = dt.NewRow();

dr[“name”] = “Koji”;

dr[“number”] = 2;

dr[“authenticity”] = false;

dr[“description”] = “Hello Java”;

dt.Rows.Add(dr);

//3行目

dr = dt.NewRow();

dr[“name”] = “Hanako”;

dr[“number”] = 3;

dr[“authenticity”] = true;

dr[“description”] = “Hello JavaScript”;

dt.Rows.Add(dr);

//データテーブルの結果を出力

for(int i_r = 0; i_r < dt.Rows.Count; i_r++)

{

for(int i_c = 0; i_c < dt.Columns.Count; i_c++)

{

Console.Write(dt.Rows[i_r][i_c].ToString());

}

Console.WriteLine();

}

Add()の引数はカラムの順番と合わせる必要があります。
こちらの記述で行を追加しても、前章と同じくforで出力できます。またforeachを使った出力もできます。

//forで出力

for(int i_r = 0; i_r < dt_fruits2.Rows.Count; i_r++)

{

for(int i_c = 0; i_c < dt_fruits2.Columns.Count; i_c++)

{

Console.Write(dt_fruits2.Rows[i_r][i_c].ToString() + ” “);

}

Console.WriteLine();

}

//foreachで出力

foreach(DataRow row in dt_fruits2.Rows)

{

foreach(DataColumn column in dt_fruits2.Columns)

{

Console.Write(row[column] + ” “);

}

Console.WriteLine();

}

DataRowを使っていませんが、Rowsのインデックスが設定されるようですね。
foreachの出力でわかると思いますが、 DataRow[DataColumn] の形でも出力できます。DataRowは DataTable.Rows[行インデックス] で、DataColumnは DataTable.Columns[“カラム名”] です。公式では、DataColumnは列のスキーマを表す、と簡単に説明してありますが、DataTableのデータをあれこれ操作するなら列インデックスよりもこちらを使った方がわかりやすそうに思います。列スキーマをあらかじめ変数として宣言しておけばよさそうです。

目次にもどる

DataSetビジュアライザ―を使ってテーブルを確認する(VisualStudio)

Visual Studioのデバッグ機能の中にDataSetビジュアライザ―があります。DataSetにセットした各テーブルデータを表形式で確認できます。サンプルコードでは2つのDataTableを作成し、DataSetにそれらをセットしています。

//テーブル作成

DataTable dt = new DataTable(“students”);

//列(カラム)作成

dt.Columns.Add(“name”, typeof(string));

dt.Columns.Add(“number”, typeof(int));

dt.Columns.Add(“authenticity”, typeof(bool));

dt.Columns.Add(“description”, typeof(string));

//行(DataRow)作成

//1行目

DataRow dr;

dr = dt.NewRow();

dr[“name”] = “Taro”;

dr[“number”] = 1;

dr[“authenticity”] = true;

dr[“description”] = “Hello C#”;

//行をテーブルに追加

dt.Rows.Add(dr);

//2行目

dr = dt.NewRow();

dr[“name”] = “Koji”;

dr[“number”] = 2;

dr[“authenticity”] = false;

dr[“description”] = “Hello Java”;

dt.Rows.Add(dr);

//3行目

dr = dt.NewRow();

dr[“name”] = “Hanako”;

dr[“number”] = 3;

dr[“authenticity”] = true;

dr[“description”] = “Hello JavaScript”;

dt.Rows.Add(dr);

//fruitsテーブルを作成

DataTable dt_fruits = new DataTable(“fruits”);

dt_fruits.Columns.Add(“name”, typeof(string));

dt_fruits.Columns.Add(“price”, typeof(int));

dt_fruits.Columns.Add(“japanesename”, typeof(string));

DataRow dr_fruits;

dr_fruits = dt_fruits.NewRow();

dr_fruits[“name”] = “apple”;

dr_fruits[“price”] = 120;

dr_fruits[“japanesename”] = “りんご”;

dt_fruits.Rows.Add(dr_fruits);

dr_fruits = dt_fruits.NewRow();

dr_fruits[“name”] = “orange”;

dr_fruits[“price”] = 100;

dr_fruits[“japanesename”] = “オレンジ”;

dt_fruits.Rows.Add(dr_fruits);

dr_fruits = dt_fruits.NewRow();

dr_fruits[“name”] = “banana”;

dr_fruits[“price”] = 220;

dr_fruits[“japanesename”] = “バナナ”;

dt_fruits.Rows.Add(dr_fruits);

//2つのテーブルをDataSetに格納

DataSet ds = new DataSet();

ds.Tables.Add(dt);

ds.Tables.Add(dt_fruits);

Console.WriteLine();

DataSetにテーブルをセットしたあとの行にブレークポイントをおき、F5でデバッグを開始します。

DataSetビジュアライザーの表示方法1

DataSetの部分にポインタを合わせるとメニューがでますので、虫眼鏡をクリックしビジュアライザーをクリックします。

DataSetビジュアライザーの表示方法2

DataSetビジュアライザーの表示方法3

DataSetにセットされたテーブルが表形式で表示されました。

目次にもどる

SNSでもご購読できます。


このエントリーをはてなブックマークに追加

コメントを残す

*