DataTableとは?作成するための4手順や活用方法を紹介
- プログラマー
- DataTableっていう名前から予測すると、テーブルか何かを作成できるんですかね?
- プロジェクト
マネージャー - そのとおり!さっそく見ていきましょう。
DataTableとは?
DataTableはMicrosoft.Net Frameworkに用意されているクラスで、VB.NETやC#のプログラミングでよく使います。
DataTableクラスを使うと、表形式のデータを扱うのに必要なメソッドがあらかじめ用意されているので、コーディングが楽になります。
また、内部処理ではDataTableクラスを使ってデータを整え、表示の際にDataGridViewにデータを移送することも可能です。
DataTableを作成する4手順
はじめに、DataTableでテーブルを作成する際の流れを把握しておきましょう。.NET FrameworkのDataTableクラスを使うためには、まず.NET Frameworkの環境が必要になります。
C#もしくはVB.NETのフォームで、DataTableクラスを使ってデータ表を作成します。C#とVB.NETでは操作性が異なる部分もありますが、DataTableのコードとしては同じイメージで使うことが可能で、手順は以下のとおりです。
- Windowsフォームで下準備
- DataTableクラスを利用する
- 宣言を行う
- カラム名を追加する
- テーブルを表示する
DataTableの使い方1:Windowsフォームで下準備
DataTableクラスを使った結果を簡単に確認できるよう、Windowsフォームを使って実装してみましょう。
DataTableクラスはプログラムの内部処理に使うクラスなので、結果をフォームで確認するためには、DataTableクラスの設定値をフォーム表示可能なコントロールに移送して表示させます。ここではDataGridViewを使って内容を表示するので、フォームに配置しておきましょう。
DataTableの使い方2:DataTableクラスを利用する宣言を行う
プログラムの中でDataTableクラスを利用する際は宣言が必要です。SampleTBLという変数を使う場合、DataTableの宣言は以下のように記述します。
System.Data.DataTable table = new DataTable(“”SampleTBL””);
または
using System.Data;
DataTable table = new DataTable(“”SampleTBL””);
DataTableの使い方3:カラム名を追加する
フォームに表を表示したときに、各列が何の値を表示しているのかわかるように列名を表示させましょう。ここでは例として1列目を「項番」、2列目を「商品名」、3列目を「価格」として説明します。DataTableクラスへの列名の追加は以下のように記述します。
SampleTBL.Columns.Add(“”項番””, Type.GetType(“”System.Int32″”));
SampleTBL.Columns.Add(“”商品名””);
SampleTBL.Columns.Add(“”価格””, Type.GetType(“”System.Int32″”));
DataTableの使い方4:テーブルを表示する
カラム名がきちんと設定されたかフォームに表示して確認してみましょう。DataTableのデータをDataGridViewにセットしてフォームに表示させます。
DataGridView1.DataSource = SampleTBL;
フォームを実行するとカラム名だけが表示されますが、データ内容も表示させるときは、「SampleTBL.Rows.Add(1,””石鹸””, 150);」のように行データを追加したうえで、DataGridViewに移送します。
DataTableの活用方法7つ
ここまでの説明の中では、DataTableを使ってプログラム内部で表を定義し、DataGridViewコントロールにDataTableのテーブル内容すべてをセットしてフォームに表示させました。
DataTableクラスはプログラム内部で表を作成し、アウトプットに利用できますが、ほかにどのような場面で使われるクラスなのでしょう。ここでは、DataTableクラスの活用方法を紹介します。
DataTableの活用方法1:データ抽出
DataTableクラスを使っていれば、SELECTメソッドやLINQを使ってデータを抽出できます。LINQはプログラム内で使えるクエリの一種で、データ抽出速度はSELECTメソッドより速くなります。
商品名が「牛乳」のデータを抽出
DataRow[] dR = SampleTBL.AsEnumerable()
.Where(row => row.Field(“”商品名””) == “”牛乳””).ToArray();
DataTableの活用方法2:絞り込み
DataTableクラスのSELECTメソッドは、データを絞り込めます。SELECTメソッドは、条件を設定してデータ抽出に使うことも可能です。
例えば、「項番/商品名/価格」という3つの列を定義したDataTableクラスから、「価格が1,000円以上のもの」という条件で絞り込みたい場合は、以下のように記述します。
DataRow[] dR = SampleTBL.Select(“”価格 >= 1000″”);
DataTableの活用方法3:ソート
DataTableクラスに格納されたデータをソートさせられますが、その方法はSELECTメソッドを使う方法とLINQを使う方法です。
DataTableクラスでは、データ抽出にもSELECTを使う方法とLINQを使う方法がありますが、ソートはデータ抽出文の応用記述になります。どちらのパターンを使う場合でも、データ抽出文の一部を変更または追記すれば、ソート文になります。
Selectを使う場合
DataTableクラスでSELECTメソッドを使ってソートを行う場合は、データ抽出文の中にソートキーとなる列名と「昇順」を表す「ASC」もしくは降順を表す「DESC」を記述します。SELECTメソッドの第二引数にソート関連文字列を記述します。
商品名:牛乳を価格の高い順に表示する場合(降順)
DataRow[] dR = SampleTBL.Select(“”商品名= ‘牛乳'””, “”価格 DESC””);
LINQを使う場合
DataTableクラスでLINQを使ってソートを行う場合は、データ抽出文の後でソートキー指定を追記します。昇順を指定する場合はOrderByメソッドを、降順指定する場合はOrderByDescendingメソッドを使います。
商品名:牛乳を価格の高い順に表示する場合(降順)
DataRow[] dR = SampleTBL.AsEnumerable()
.Where(row => row.Field(“”商品名””) == “”牛乳””)
.OrderByDescending(row => row.Field(“”価格 “”)).ToArray();
DataTableの活用方法4:集計演算
DataTableのComputeメソッドを使ってDataTableクラスに格納したデータの集計演算ができます。Computeメソッドの構文と例は、以下のように表されます。
Compute (string expression, string filter);
expression:計算する式
filter:式で評価される行を制限するフィルター
object obj = SampleTBL.Compute(“”Max(価格)””, “”商品名= ‘牛乳'””);
DataTableの活用方法5:1行分のデータを取得する
DataTableクラスにセットされている表形式のデータを、1行単位で追加したり取得したりするときは、DataRowクラスを使います。また、DataTableを使ってデータ抽出をしたり、ソートしたりするときも利用しています。
DataTable SampleTBL = new DataTable(“”Table””);
DataRow dRow = SampleTBL.NewRow();
dRow[“”項番””] = 253;
dRow[“”商品名””] = “”ボールペン””;
dRow[“”価格””] = 98;
SampleTBL.Rows.Add(dRow);
DataTableの活用方法6:データベースのデータを使う
データベースからデータを取得したり、逆にセットしたりするときは、DataTableの親集合体であるDeataSetを使います。また、DataSetはデータベースだけでなく、画面とのデータのやり取りでも活用できます。
DataSet dsSample = new DataSet(“”Tables””);
~ 中略(データベースアクセス記述) ~
DataTable SampleTBL;
SampleTBL= dsSample.Tables[“”Shohin””];
DataTableの活用方法7:画面にデータを表示する
DatTableに設定した値はプログラム内部で利用しますが、DataGridViewにデータを移送して、ユーザが参照できる画面フォームに表示することも可能です。
カラム名およびデータがセットされたDataTable:SampleTBL
フォーム上のDataGridViewのオブジェクト名:objGridView
objGridView.DataSource = SampleTBL;
DataTableにデータを追加する方法
DataTableの使い方の例の中で、カラム名の追加について触れましたが、データ部分も同様に1行1行追加していくことができます。1行ずつ追加する方法もコード記述は一律ではなく、データの扱い方に適した方法を選択して記述できます。
ここでは、DataTableに直接値を追加していく方法と、1行単位でデータを作成して、DataTableクラスに移送する方法を紹介します。
Rows.Add
DataTableクラスの変数にデータを追加していくときは、DataTableクラスのRowsプロパティのAddメソッドを使います。そして、Rows.Addではデータを1行ずつ追加していきます。
カラム名「項番/商品名/価格」のDataTableクラスSampleTBLに行データ追加
SampleTBL.Rows.Add(1, “”石鹸””,230);
SampleTBL.Rows.Add(2, “”タオル””,100);
DataRow
DataRowクラスにデータを設定しておいて、DataRowのTableプロパティを使って、データをまるごとDataTableクラスに移送するという方法もあります。また、DataRowに設定した値を1行ずつRows.Addで追加することも可能です。
カラム名「項番/商品名/価格」の行データ追加
DataRow dR
dR[“”項番””] = 1;
dR[“”商品名””] = “”石鹸パン””;
dR[“”価格””] = “”230″”;
DataTable SampleTBL= dR.Table;
または
DataTable SampleTBL.Rows.Add(dR);
- プログラマー
- たったこれだけでテーブルが作成できるんですね!
- プロジェクト
マネージャー - ちなみに、ここでは紹介していないけど、DataSetクラスではテーブル間の関係も保持できるんですよ。後で使ってみましょう!
DataTableクラスを使えば簡単に表形式データを作成できる
今回は、DataTableクラスについて解説しました。DataTableクラスを使うことで簡単に表形式のデータを作成することができるので、この記事を参考にぜひ業務内でもDataTableを利用してみてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
新着案件New Job
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅) -
債権債務システム追加開発/東京都文京区/【WEB面談可】/在宅勤務
月給62万~67万円東京都文京区(後楽園駅) -
PMO/東京都豊島区/【WEB面談可】/在宅勤務
月給55万~55万円東京都豊島区(池袋駅)