2

達成目標: 3 つの異なる場所からの 3 つの異なる SQL クエリからの 3 つの異なる dataTables を、関数から返さなければならない 1 つの DataSet にしたいと考えています。

私は持っている :

Private Function getDataSet()
    Dim ad1,ad2,ad3 As Object
    ad1 = New Data.OleDb.OleDbDataAdapter(query1, conStr1)
    ad2 = New Data.SqlClient.SqlDataAdapter(query2, conStr2)
    ad3 = New Data.SqlClient.SqlDataAdapter(query3, conStr3)
    Dim dataSet As New Data.DataSet

    // I want to fill dataSet with the 3 adapters !
    // ad1.Fill(dataSet) : ad2.Fill(dataSet) : ad3.Fill(dataSet)
    // Will this work ?

    ad1.Dispose() : ad2.Dispose() : ad3.Dispose()  // What does Dispose() method do ?
    Return dataSet
End Function

Dim ds = getDataSet()
data1 = ds.Tables(0)
data2 = ds.Tables(1)
data3 = ds.Tables(2)

助けてください..

  • 上記のタスクの可能な限り最良の実装を使用したいと思います。
4

1 に答える 1

2

DataSet には入力しませんが、DataSet の DataTables に各 DataAdapter を入力します。

Private Function getDataSet() As DataSet
    Dim ds As New Data.DataSet
    ds.Tables.Add(New DataTable("Table1"))
    ds.Tables.Add(New DataTable("Table2"))
    ds.Tables.Add(New DataTable("Table3"))

    Using con As New OleDb.OleDbConnection("conStr1")
        Using ad As New Data.OleDb.OleDbDataAdapter("query1", con)
            con.Open()
            ad.Fill(ds.Tables("Table1"))
        End Using
    End Using
    Using con As New OleDb.OleDbConnection("conStr2")
        Using ad As New Data.OleDb.OleDbDataAdapter("query2", con)
            con.Open()
            ad.Fill(ds.Tables("Table2"))
        End Using
    End Using
    Using con As New OleDb.OleDbConnection("conStr3")
        Using ad As New Data.OleDb.OleDbDataAdapter("query3", con)
            con.Open()
            ad.Fill(ds.Tables("Table3"))
        End Using
    End Using

    Return ds
End Function

DataSet では、任意の数の DataAdapter オブジェクトを使用できます。各 DataAdapter を使用して、1 つ以上の DataTable オブジェクトを入力し、更新を解決して関連するデータ ソースに戻すことができます。DataRelation オブジェクトと Constraint オブジェクトをローカルで DataSet に追加できるため、異なるデータ ソースからのデータを関連付けることができます。たとえば、DataSet には、Microsoft SQL Server データベース、OLE DB を通じて公開される IBM DB2 データベース、および XML をストリーミングするデータ ソースからのデータを含めることができます。1 つ以上の DataAdapter オブジェクトが、各データ ソースへの通信を処理できます。

もっと...

" // Dispose() メソッドは何をしますか?"

http://msdn.microsoft.com/en-us/library/system.idisposable.dispose.aspx

アンマネージ リソースの解放、リリース、またはリセットに関連するアプリケーション定義のタスクを実行します。

using ステートメント(上記のコード サンプルを参照) の方が簡単で、接続も閉じられるため、こちらをお勧めします。

于 2011-08-08T20:08:35.970 に答える