●[ADO.NET] データ操作の使える新機能
○フィルターをかけたDataViewの結果セットだけをDataTableに変換
Dim dv As DataView = new DataView(dt)
dv.RowFilter = "条件"
Dim dtFilter As DataTable = dv.ToTable()
※指定したカラムだけを抽出することも可能
dt2 = dv.ToTable("Table1", New String() {"Column1", "Column2"})
○SQLのSELECT DISTINCTに相当する機能
Dim dv As DataView = new DataView(dt)
①Dim dt As DataTable = dv.DefaultView.ToTable(True,"Column1")
※「SELECT DISTINCT Column1 FROM AnyTable」に相当
②Dim dt As DataTable = dv.DefaultView.ToTable(True,"Column1","Column2")
※「SELECT DISTINCT Column1,Column2 FROM AnyTable」に相当
○1.xではDataSetにしかなかったが、2.0でDataTable単体でも可能になった機能
ReadXML
ReadXMLSchema
WriteXML
WriteXMLSchema
○DataReaderから一括読込
1.xではDataReaderでデータベースから読み込んだ場合、ループさせてデータを読み取っていたが
Loadメソッドにより一括読込可能になった。
Dim cmd As New SqlCommand("Select文",conn)
Dim reader As New SqlDataReader
reader = cmd.ExecuteReader()
If reader.Read() Then
…
1行ずつ読みながらDataTableに書き込んだりする
…
End If
↓
dt.Load(reader, LoadOption.OverwriteRow) ←1行で済む
○DataSetやDataTableに対してDataTableReaderオブジェクトが取得できるようになった
(元DataTableの削除行を除いた現在の値だけが含まれる結果セット)
Dim dtr As DataTableReader = dt.GetDataReader
※DataTableをコピーする場合
Dim dt2 As New DataTable
dt2.Load(dt.GetDataReader)
Dim dv As DataView = new DataView(dt)
dv.RowFilter = "条件"
Dim dtFilter As DataTable = dv.ToTable()
※指定したカラムだけを抽出することも可能
dt2 = dv.ToTable("Table1", New String() {"Column1", "Column2"})
○SQLのSELECT DISTINCTに相当する機能
Dim dv As DataView = new DataView(dt)
①Dim dt As DataTable = dv.DefaultView.ToTable(True,"Column1")
※「SELECT DISTINCT Column1 FROM AnyTable」に相当
②Dim dt As DataTable = dv.DefaultView.ToTable(True,"Column1","Column2")
※「SELECT DISTINCT Column1,Column2 FROM AnyTable」に相当
○1.xではDataSetにしかなかったが、2.0でDataTable単体でも可能になった機能
ReadXML
ReadXMLSchema
WriteXML
WriteXMLSchema
○DataReaderから一括読込
1.xではDataReaderでデータベースから読み込んだ場合、ループさせてデータを読み取っていたが
Loadメソッドにより一括読込可能になった。
Dim cmd As New SqlCommand("Select文",conn)
Dim reader As New SqlDataReader
reader = cmd.ExecuteReader()
If reader.Read() Then
…
1行ずつ読みながらDataTableに書き込んだりする
…
End If
↓
dt.Load(reader, LoadOption.OverwriteRow) ←1行で済む
○DataSetやDataTableに対してDataTableReaderオブジェクトが取得できるようになった
(元DataTableの削除行を除いた現在の値だけが含まれる結果セット)
Dim dtr As DataTableReader = dt.GetDataReader
※DataTableをコピーする場合
Dim dt2 As New DataTable
dt2.Load(dt.GetDataReader)