きっかけ
VB.NETでデータベースのデータを扱ったときに、DataSetやDataTableが出てきて違いがわからなかった。
DataTableを使用してセルの値を取得する方法を理解することに苦労したため、備忘録としてまとめる。
DataSetとDataTableの違い
Excelに例えた場合
DataSet:Bookにあたる
DataTable:Sheetにあたる
その他
・行(Rows)と列(Columns)は0から数える。
・列の指定は列名でも可能。(例:Columns("name"))
DataTableの値を出力する方法
dim dt as DataTable = ds.Tables(0)
for Each row as DataRow In dt.Rows
Console.Write(row("id").ToString & " ")
Console.Write(row("名前").ToString & " ")
Console.Write(row("年齢").ToString & " ")
Next
<出力結果>
1 鈴木 10
2 佐藤 20
3 田中 30
4 天野 40
5 武藤 50
特定のセルの値を取得する方法
dim val as String = dt.rows(1).item(1).ToString
<出力結果>
佐藤
特定の列の値を集計する方法
'書き方1
Dim totalAge As Integer = dt.Rows.Cast(Of DataRow).Sum(Function(row) CInt(row("年齢")))
' 書き方2
Dim totalAge As Integer = 0
For Each row As DataRow In dt.Rows
totalAge += row("年齢")
Next
デバッグでDataTableの中身を確認する方法
1.任意の位置で実行を止める。
2.DataTableが入っている変数にカーソルを合わせる、または
ウォッチを見たときに虫眼鏡アイコン 表示
をクリックする。
3.DataTable Visualizerが起動し、DataTableの中身を確認できる。
参考サイト
DataTableに関する内容
https://dreamparadaisu.com/visualbasic_12/
https://hironimo.com/prog/vbnet/datatable/
DataTableのループ処理
https://zukucode.com/2017/10/vbnet-datatable-loop.html
特定のセルの値を取得する
https://rikaix.hatenablog.com/entry/2019/07/27/234831
特定の列を集計する
https://zukucode.com/2019/11/vbnet-datatable-sum.html
DataTableの中身の確認方法
http://ht-jp.net/blog/pc/c/vs-dataset-v