6

DataReaderの結果を配列に格納しながら、列名でそれらを参照できるようにするにはどうすればよいですか?基本的に、DataReaderのコンテンツのクローンを作成して、リーダーを閉じてもアクセスできるようにしたいと考えています。みんなが提案するように、アイテムをDataTableに保存したくありません。

たくさんの答えを見てきましたが、本当に欲しいものが見つかりませんでした

4

1 に答える 1

9

これを行うために私が見つけた最も簡単な方法は、次のように、キーとして文字列、値としてオブジェクトを含む辞書を配列に入力することです。

' 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ドライバーを使用していますが、他の一般的なデータベースコネクタでも同じ方法を使用できます。

于 2012-08-15T22:15:57.440 に答える