DataTableで使用する列(Columnsプロパティ)の操作を説明します。
列(フィールド)の追加および主キーの設定をする
Dim tbl As DataTable = New DataTable("Table1")
Dim PrimaryColumn As DataColumn
PrimaryColumn = tbl.Columns.Add("ID", Type.GetType("System.Int32"))
tbl.Columns.Add("Item1", Type.GetType("System.String"))
tbl.Columns.Add("Item2", Type.GetType("System.String"))
tbl.Columns.Add("Item3", Type.GetType("System.Double"))
'フィールドに主キーを設定(IDを主キーにします)
tbl.PrimaryKey = New DataColumn() {PrimaryColumn}
フィールド名の存在チェックおよびフィールド名の削除をする
フィールド名が主キーに設定されている時は、削除することはできません。
Dim ItemName = "Item1"
Dim columns As DataColumnCollection = tbl.Columns
'フィールドの存在チェック
If columns.Contains(ItemName) Then
'削除できるかチェック
If columns.CanRemove(columns(ItemName)) Then
'フィールド削除
columns.Remove(ItemName)
End If
End If
フィールド数を取得する
MessageBox.Show(Tbl.Columns.Count)
フィールドでループ
Dim s As String = ""
For Each Col As DataColumn In tbl.Columns
s &= Col.ColumnName & System.Environment.NewLine
Next
MessageBox.Show(s)
主キーの大文字と小文字を区別する
主キーが文字列の場合、主キーの大文字と小文字を区別する場合はCaseSensitiveをTrueに設定します。
Dim tbl As DataTable = New DataTable("Table1")
Dim PrimaryColumn As DataColumn
Dim row As DataRow
PrimaryColumn = tbl.Columns.Add("ID", Type.GetType("System.String"))
tbl.Columns.Add("Item1", Type.GetType("System.String"))
tbl.Columns.Add("Item2", Type.GetType("System.String"))
tbl.PrimaryKey = New DataColumn() {PrimaryColumn}
'主キーの大文字小文字を区別する
tbl.CaseSensitive = True
'1列目
row = tbl.NewRow
row("ID") = "AAA1"
row("Item1") = "A1"
row("Item2") = "A2"
tbl.Rows.Add(row)
'2列目
row = tbl.NewRow
row("ID") = "aaa1"
row("Item1") = "B1"
row("Item2") = "B2"
tbl.Rows.Add(row)
上のコードでCaseSensitiveがFalseの場合2列目の追加でエラーになります。