DataReaderの結果を配列に格納しながら、列名でそれらを参照できるようにするにはどうすればよいですか?基本的に、DataReaderのコンテンツのクローンを作成して、リーダーを閉じてもアクセスできるようにしたいと考えています。みんなが提案するように、アイテムをDataTableに保存したくありません。
たくさんの答えを見てきましたが、本当に欲しいものが見つかりませんでした
DataReaderの結果を配列に格納しながら、列名でそれらを参照できるようにするにはどうすればよいですか?基本的に、DataReaderのコンテンツのクローンを作成して、リーダーを閉じてもアクセスできるようにしたいと考えています。みんなが提案するように、アイテムをDataTableに保存したくありません。
たくさんの答えを見てきましたが、本当に欲しいものが見つかりませんでした
これを行うために私が見つけた最も簡単な方法は、次のように、キーとして文字列、値としてオブジェクトを含む辞書を配列に入力することです。
' Read data from database
Dim result As New ArrayList()
Dr = myCommand.ExecuteReader()
' Add each entry to array list
While Dr.Read()
' Insert each column into a dictionary
Dim dict As New Dictionary(Of String, Object)
For count As Integer = 0 To (Dr.FieldCount - 1)
dict.Add(Dr.GetName(count), Dr(count))
Next
' Add the dictionary to the ArrayList
result.Add(dict)
End While
Dr.Close()
したがって、次のようなforループを使用して結果をループすることができます。
For Each dat As Dictionary(Of String, Object) In result
Console.Write(dat("ColName"))
Next
それが単なるDataReaderである場合の方法と非常によく似ています。
While Dr.Read()
Console.Write(Dr("ColName"))
End While
この例ではMySQL/NETドライバーを使用していますが、他の一般的なデータベースコネクタでも同じ方法を使用できます。