【C#でADO.NETを動かす】DataSetとDataTableの操作方法
C#において、データベースなどから取得したデータをメモリ領域へ格納するのに必要なのがDataSetです。DataSetではテーブルを複数保持することができます。この複数保持できるテーブルひとつひとつがDataTableということになります。ここではDataTableの活用方法をメインに紹介します。
- システム
エンジニア - なんだか「Data」って単語がいっぱい出てきてややこしいですよね……
- プロジェクト
リーダー - そうですね。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 |
- システム
エンジニア - エクセルにあてはめるとわかりやすいですね。まずはイメージを掴むことからチャレンジしてみます。
- プロジェクト
リーダー - そうですね。イメージを掴むことってとても大事ですよ。データをテーブルで保持して、その保持されているデータをループで回しながら編集するというロジックは、プログラミング言語が変わっても必ずといっていいほど出てきます。現場ですぐにコーディングできるように、今のうちから考え方だけでも自分のものにしておきましょう。
DataSetだけではデータは格納できません
DataSetはデータを格納するための入れ物ですが、DataSetだけではデータを格納することはできません。その中には必ずDataTableが必要ですし、DataColumnもDataRowもそれぞれ必要です。これら4つをワンセットとして覚えておきましょう。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
C#新着案件New Job
-
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(新宿駅) -
システム開発/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(新宿駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円神奈川県横浜市(桜木町駅) -
デバック、テスト項目の作成/神奈川県横浜市/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円神奈川県横浜市(桜木町駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代前半の方活躍中/経験1年以上の方活躍中】/在宅勤務
月給29万~34万円東京都新宿区(西新宿駅) -
基幹システム開発導入/東京都新宿区/【WEB面談可/C#経験者/20代後半~40代の方活躍中/経験年数不問】/在宅勤務
月給41万~50万円東京都新宿区(西新宿駅)