こんにちは、ひろにも です。
今回は、VB.NETのDataTableについて紹介していきます。今回の記事はデータベースの基礎知識があるとわかりやすいです。なくても大丈夫です!
個人的に、DataTableはシステム開発する時にめちゃめちゃ使ってました。
理解できるととても便利なので、VB.NETを勉強している人は是非、使ってほしい型です!
Sqlserverのデータをデータテーブルに格納する方法は、別記事でまとめています。
それでは、始めていきましょう!
DataTableの書き方
書き方を忘れることが多いので、備忘録用に初めに書き方を記載しておきます。
'DataTableの変数宣言
Dim dt As New DataTable("people")
'列追加
dt.Columns.Add("列名")
'行の設定
Dim dtRow As DataRow
dtRow = dt.NewRow
dtRow("列名") = "任意の値"
'行追加
dt.Rows.Add(dtRow)
DataTableとは
DataTableとは、メモリー上にDB(データベース)を持たせる、DataSetと呼ばれる型の子要素のことです。
つまり、DBのテーブルをそのまま、変数にするための型ということになります。
また、DataTableの子要素として、DataRowというのがあり、DataTableの1行分がDataRowです。
まとめると、
- DataSet = DB(データベース)
- DataTable = データベースのテーブル
- DataRow = 1行分のデータ
データベース以外にも、Excelで言うと
- DataSet = エクセルのBook
- DataTable = エクセルのシート
- DataRow = エクセルシートの1行
こんな、イメージです。
DataTableの使い方
まず、宣言の仕方から見ていきましょう。
① peopleという名前でテーブルを作成します。
'DataTableの変数宣言
Dim dt As 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行目
dtRow = dt.NewRow
dtRow("name") = "ひろ"
dtRow("old") = "15"
dtRow("height") = "150"
'行追加
dt.Rows.Add(dtRow)
'2行目
dtRow = dt.NewRow
dtRow("name") = "にも"
dtRow("old") = "20"
dtRow("height") = "160"
'行追加
dt.Rows.Add(dtRow)
これで、DataTableを作成することができました。
プログラムの例
'データテーブル宣言
Dim dt As New DataTable("people")
'列項目作成
dt.Columns.Add("name")
dt.Columns.Add("old")
dt.Columns.Add("height")
'DataRow宣言
Dim dtRow As DataRow
'1行目
dtRow = dt.NewRow
dtRow("name") = "ひろ"
dtRow("old") = "15"
dtRow("height") = "150"
'行追加
dt.Rows.Add(dtRow)
'2行目
dtRow = dt.NewRow
dtRow("name") = "にも"
dtRow("old") = "20"
dtRow("height") = "160"
'行追加
dt.Rows.Add(dtRow)
'結果出力
For i As Integer = 0 To dt.Rows.Count - 1
For k As Integer = 0 To dt.Columns.Count - 1
Console.Write(dt.Rows(i).Item(k).ToString & " ")
Next
Console.WriteLine()
Next
fa-check出力結果
ひろ 15 150
にも 20 160
データセットの使い方
上記と同様にMoneyテーブルを作成します。
Dim dt_money As New DataTable("money")
dt_money.Columns.Add("name")
dt_money.Columns.Add("money")
'DataRow宣言
Dim dtRow_money As DataRow
'1行目
dtRow_money = dt_money.NewRow
dtRow_money("name") = "ひろ"
dtRow_money("money") = "200000"
'行追加
dt_money.Rows.Add(dtRow_money)
'2行目
dtRow_money = dt_money.NewRow
dtRow_money("name") = "にも"
dtRow_money("money") = "1000000"
'行追加
dt_money.Rows.Add(dtRow_money)
作成した2つのテーブル(people,money)をDataSetに格納していきます。
Dim ds As New DataSet
ds.Tables.Add(dt)
ds.Tables.Add(dt_money)a
以上でDataSetは完成です。
最後にソースをまとめておきます。
プログラムのまとめ
' 1テーブル目
Dim dt As New DataTable("people")
dt.Columns.Add("name")
dt.Columns.Add("old")
dt.Columns.Add("height")
'DataRow宣言
Dim dtRow As DataRow
'1行目
dtRow = dt.NewRow
dtRow("name") = "ひろ"
dtRow("old") = "15"
dtRow("height") = "150"
'行追加
dt.Rows.Add(dtRow)
'2行目
dtRow = dt.NewRow
dtRow("name") = "にも"
dtRow("old") = "20"
dtRow("height") = "160"
'行追加
dt.Rows.Add(dtRow)
' 2テーブル目
Dim dt_money As New DataTable("money")
dt_money.Columns.Add("name")
dt_money.Columns.Add("money")
'DataRow宣言
Dim dtRow_money As DataRow
'1行目
dtRow_money = dt_money.NewRow
dtRow_money("name") = "ひろ"
dtRow_money("money") = "200000"
'行追加
dt_money.Rows.Add(dtRow_money)
'2行目
dtRow_money = dt_money.NewRow
dtRow_money("name") = "にも"
dtRow_money("money") = "1000000"
'行追加
dt_money.Rows.Add(dtRow_money)
'--------------------
' dataSet作成
'--------------------
Dim ds As New DataSet
ds.Tables.Add(dt)
ds.Tables.Add(dt_money)
For tableCount As Integer = 0 To ds.Tables.Count - 1
For rowIndex As Integer = 0 To ds.Tables(tableCount).Rows.Count - 1
For colIndex As Integer = 0 To ds.Tables(tableCount).Columns.Count - 1
Console.Write(ds.Tables(tableCount).Rows(rowIndex).Item(colIndex).ToString)
Next
Console.WriteLine()
Next
Next
以上でDataTableの基本的な使い方は終わりです。
始めにも言いましたが、DataTableはかなり使えるので、しっかりとやり方を覚えていおいてほしいですね!