VB.NET DataTableのサンプル

VB.NETのDataTableのサンプルです。

目次

サンプル DataTableクラス
  取得する行を指定する(Select)
  DataTableをコピーする(Copy)
  DataTableの値はどこで確認できる?

DataTableクラス

DataTableのサンプルです。

Module Module1
	Sub Main()
		'テーブル作成
		Dim syain As New DataTable("社員テーブル")
		syain.Columns.Add("id")
		syain.Columns.Add("name")
		syain.Columns.Add("romaji")

		'1行目を作成
		Dim row As DataRow
		row = syain.NewRow
		row("id") = "1"
		row("name") = "鈴木"
		row("romaji") = "suzuki"

		'1行目をテーブルに追加
		syain.Rows.Add(row)

		'2行目を作成
		row = syain.NewRow
		row("id") = "2"
		row("name") = "田中"
		row("romaji") = "tanaka"

		'2行目をテーブルに追加
		syain.Rows.Add(row)

		'3行目を作成
		row = syain.NewRow
		row("id") = "3"
		row("name") = "佐藤"
		row("romaji") = "sato"

		'3行目をテーブルに追加
		syain.Rows.Add(row)

		'3行目を変更
		syain.Rows(2).Item("name") = "竹田"
		syain.Rows(2).Item("romaji") = "takeda"

		'2行目を削除
		syain.Rows(1).Delete()
		syain.AcceptChanges()

		'ループでデータを取得
		For Each data1 As DataRow In syain.Rows
			Console.WriteLine(
				data1("id").ToString +
				data1("name").ToString +
				data1("romaji").ToString)
		Next
	End Sub
End Module

4~7行目は、テーブルと列名を作成しています。
11行目は、NewRowメソッドで行を作成しています。
12~14行目は、列名に対して値をセットしています。
17行目は、Addメソッドでテーブルに行を追加しています。
38,39行目は、テーブルの値を変更しています。Rows(2)は、3行目を表します。
1行目は(0)です。
42行目は、2行目を削除しています。
43行目のAcceptChangesで、変更を確定させます。
46行目からは、For Each文でループさせて値を表示しています。以下が表示されます。
1鈴木suzuki
3竹田takeda

取得する行を指定する(Select)

取得する行を指定するサンプルです。

Module Module1
	Sub Main()
		'テーブル作成
		Dim syain As New DataTable("社員テーブル")
		syain.Columns.Add("id")
		syain.Columns.Add("name")

		'1行目を作成
		Dim row As DataRow
		row = syain.NewRow
		row("id") = "1"
		row("name") = "suzuki"
		syain.Rows.Add(row)

		'2行目を作成
		row = syain.NewRow
		row("id") = "2"
		row("name") = "tanaka"
		syain.Rows.Add(row)

		'3行目を作成
		row = syain.NewRow
		row("id") = "3"
		row("name") = "sato"
		syain.Rows.Add(row)

		Dim d1 As DataRow()
		'd1 = syain.Select("name = 'tanaka'")
		Dim name1 = "tanaka"
		d1 = syain.Select("name = '" + name1 + "'")

		For Each d As DataRow In d1
			Console.WriteLine(d("id").ToString + d("name").ToString) '2tanaka
		Next

		Dim d2 As DataRow()
		d2 = syain.Select("id >= '2'", "name")

		For Each d As DataRow In d2
			Console.WriteLine(d("id").ToString + d("name").ToString) '3sato 2tanaka
		Next

		Dim d3 As DataRow()
		d3 = syain.Select("id >= '2'", "name desc")

		For Each d As DataRow In d3
			Console.WriteLine(d("id").ToString + d("name").ToString) '2tanaka 3sato
		Next
	End Sub
End Module

30行目は、name列の値を指定して対象行を取得しています。
変数の前後をシングルコーテションでくくります。直書きでは28行目のようになります。
37行目の1つめの引数は条件で、2つめの引数はソートする項目です。昇順になります。
44行目の1つめの引数は条件で、2つめの引数はソートする項目です。descは降順になります。

DataTableをコピーする(Copy)

DataTableをコピーするサンプルです。

Module Module1
	Sub Main()
		'テーブル作成
		Dim syain As New DataTable("社員テーブル")
		syain.Columns.Add("id")
		syain.Columns.Add("name")
		syain.Columns.Add("romaji")

		'1行目を作成
		Dim row As DataRow
		row = syain.NewRow
		row("id") = "1"
		row("name") = "鈴木"
		row("romaji") = "suzuki"

		'1行目をテーブルに追加
		syain.Rows.Add(row)

		'コピー
		Dim syain2 As DataTable = syain.Copy

		Console.WriteLine(syain2.Rows(0).Item("id")) '1
		Console.WriteLine(syain2.Rows(0).Item("name")) '鈴木
		Console.WriteLine(syain2.Rows(0).Item("romaji")) 'suzuki
	End Sub
End Module

20行目のcopyメソッドで、DataTableと値をコピーします。
コピー元の値を修正してもコピー先の値は変わりません。

DataTableの値はどこで確認できる?

DataTableの値は、Rowsの下の結果ビューのItemArray配下にあります。

関連の記事

VB.NET Listの使い方のサンプル
VB.NET Dictionaryのサンプル
VB.NET HashSetのサンプル

△上に戻る