C# DataTable 使い方

こんにちは、ひろにも です。

今回は、C#のDataTableについて紹介していきます。

個人的に、DataTableはシステム開発する時にめちゃめちゃ使ってました。C#を勉強している人は是非、使ってほしい型です!

それでは、始めていきましょう!

DataTableの書き方

書き方を忘れることが多いので、備忘録用に初めに書き方を記載しておきます。

//DataTableの変数宣言
DataTable dt = new DataTable("テーブル名");

//列追加
dt.Columns.Add("列名");

//行の設定
DataRow dr;
dr = dt.NewRow();
dr["列名"] = "任意の値";

//行追加
dt.Rows.Add(dr);

DataTableとは

DataTableとは、メモリー上にDB(データベース)を持たせる、DataSetと呼ばれる型の子要素のことです。

つまり、DBのテーブルをそのまま、変数にするための型ということになります。

また、DataTableの子要素として、DataRowというのがあり、DataTableの1行分がDataRowです。

まとめると、

  • DataSet = DB(データベース)
  • DataTable = データベースのテーブル
  • DataRow = 1行分のデータ

 

データベース以外にも、Excelで言うと

  • DataSet = エクセルのBook
  • DataTable = エクセルのシート
  • DataRow = エクセルシートの1行

こんな、イメージです。

DataTableの使い方

まず、宣言の仕方から見ていきましょう。

① peopleという名前でテーブルを作成します。

//DataTableの変数宣言
DataTable dt = new DataTable("people");

 

次に、peopleテーブルの列情報(横)を作ります。

② 名前(name)、年齢(old)、身長(height)の3項目を作成しましょう。

dt.Columns.Add("name");
dt.Columns.Add("old");
dt.Columns.Add("height");

 

次に、DataRow:行の情報(縦)を作ります。

③ 1行目{name:ひろ、old:15、height:150} 2行目{name:にも、old:20、height:160}

'1行目

 

これで、DataTableを作成することができました。

プログラムの例

//データテーブル宣言
DataTable dt = new DataTable("people");

//データテーブルの列を作成
dt.Columns.Add("name");
dt.Columns.Add("old");
dt.Columns.Add("height");

//データテーブルの行を作成
DataRow dr;
dr = dt.NewRow();
dr["name"] = "ひろ";
dr["old"] = "15";
dr["height"] = "150";

//行をデータテーブルに追加
dt.Rows.Add(dr);

//2行目を作成
dr = dt.NewRow();
dr["name"] = "にも";
dr["old"] = "20";
dr["height"] = "180";

dt.Rows.Add(dr);

//データテーブルの結果を出力
for (int rowIndex = 0; rowIndex < dt.Rows.Count; rowIndex++)
{
    for (int colIndex = 0; colIndex < dt.Columns.Count; colIndex++)
    {
        Console.Write(dt.Rows[rowIndex][colIndex].ToString());
    }
    Console.WriteLine();
}

 

出力結果

ひろ 15 150 
にも 20 180 

 

データセットの使い方

上記と同様にMoneyテーブルを作成します。

//データテーブル宣言
DataTable dt_money = new DataTable("money");

//データテーブルの列を作成
dt_money.Columns.Add("name");
dt_money.Columns.Add("money");

//データテーブルの行を作成
DataRow dr_money;
dr_money = dt_money.NewRow();
dr_money["name"] = "ひろ";
dr_money["money"] = "200000";

//行をデータテーブルに追加
dt_money.Rows.Add(dr_money);

 

作成した2つのテーブル(people,money)をDataSetに格納していきます。
DataSetは、データテーブルの集合体なので、今回は2つのデータテーブルからデータセットを作成します。

DataSet ds = new DataSet();
ds.Tables.Add(dt);
ds.Tables.Add(dt_money);

 

以上でDataSetは完成です。

最後にソースをまとめておきます。

プログラムのまとめ

using System;
using System.Data;
using System.Windows.Forms;

namespace CSharpForm
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //データテーブル宣言
            DataTable dt = new DataTable("people");

            //データテーブルの列を作成
            dt.Columns.Add("name");
            dt.Columns.Add("old");
            dt.Columns.Add("height");

            //データテーブルの行を作成
            DataRow dr;
            dr = dt.NewRow();
            dr["name"] = "ひろ";
            dr["old"] = "15";
            dr["height"] = "150";

            //行をデータテーブルに追加
            dt.Rows.Add(dr);

            //2行目を作成
            dr = dt.NewRow();
            dr["name"] = "にも";
            dr["old"] = "20";
            dr["height"] = "180";

            dt.Rows.Add(dr);

            //データテーブル宣言
            DataTable dt_money = new DataTable("money");

            //データテーブルの列を作成
            dt_money.Columns.Add("name");
            dt_money.Columns.Add("money");

            //データテーブルの行を作成
            DataRow dr_money;
            dr_money = dt_money.NewRow();
            dr_money["name"] = "ひろ";
            dr_money["money"] = "200000";

            //行をデータテーブルに追加
            dt_money.Rows.Add(dr_money);

            //データセットへ格納
            DataSet ds = new DataSet();
            ds.Tables.Add(dt);
            ds.Tables.Add(dt_money);

            //データテーブルの結果を出力
            for (int tblCnt = 0; tblCnt <ds.Tables.Count; tblCnt++)
            {
                for (int rowIndex = 0; rowIndex < ds.Tables[tblCnt].Rows.Count; rowIndex++)
                {
                    for (int colIndex = 0; colIndex < ds.Tables[tblCnt].Columns.Count; colIndex++)
                    {
                        Console.WriteLine(ds.Tables[tblCnt].Rows[rowIndex][colIndex].ToString());
                    }
                    
                }
            } 

        }
    }
}

 

以上でDataTableの基本的な使い方は終わりです。

始めにも言いましたが、DataTableはかなり便利ので、是非使ってみてください。

 

C#の記事一覧

おすすめの記事