VB.NET DataTableをコピーするサンプル

VB.NETのDataTableをコピーするサンプルです。

目次

サンプル DataTableクラス
  テーブルの構造と値をコピーする(copy)
  テーブル構造のみコピーする(clone)

DataTableクラス

テーブルの構造と値をコピーする(copy)

テーブルの構造と値をコピーするサンプルです。

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"
		syain.Rows.Add(row) '1行目をテーブルに追加

		syain.AcceptChanges()

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

		syain.Rows(0).Item("name") = "test"

		Console.WriteLine(syain.Rows(0).Item("name")) 'test
		Console.WriteLine(syain2.Rows(0).Item("name")) '鈴木
	End Sub
End Module

4~17行目は、新規でデータテーブルを作成しています。
20行目は、Copyメソッドでテーブルの構造と値をコピーしています。
22行目は、コピー元のデータテーブルの値を変更しています。
24行目のコピー元は変更されますが、コピー先の値は変更されません。

テーブル構造のみコピーする(clone)

テーブル構造のみコピーするサンプルです。

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"
		syain.Rows.Add(row) '1行目をテーブルに追加

		syain.AcceptChanges()

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

		'Console.WriteLine(syain2.Rows(0).Item("name"))

		'1行目を作成
		Dim row2 As DataRow
		row2 = syain2.NewRow
		row2("id") = "001" '値を追加
		row2("name") = "田中"
		row2("romaji") = "tanaka"
		syain2.Rows.Add(row2) '1行目をテーブルに追加
		syain2.AcceptChanges()

		Console.WriteLine(syain2.Rows(0).Item("name")) '田中
	End Sub
End Module

4~17行目は、新規でデータテーブルを作成しています。
20行目は、Cloneメソッドでテーブル構造のみコピーしています。
22行目は、コピー先の値を表示しようとしますが値はないためエラーになります。
25行目からは、コピー先のデータテーブルに値をセットしています。

関連の記事

VB.NET DataTableの行を追加/変更/削除する
VB.NET DataTableをSelectで行を取得する
VB.NET DataViewのサンプル

△上に戻る