Как заполнить набор данных 3 различными адаптерами в Vb.net? - PullRequest
2 голосов
/ 08 августа 2011

Цель для достижения: Я хочу иметь 3 разных таблицы данных из 3 разных запросов SQL из 3 разных мест в 1 одном наборе данных, который мне придется возвращать из моей функции.

Ihave:

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)

Пожалуйста, помогите ..

  • Я хочу использовать наилучшую возможную реализацию вышеуказанной задачи.

1 Ответ

2 голосов
/ 09 августа 2011

Я бы не заполнял DataSet, но DataTables DataSet каждым 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

Любое количество объектов DataAdapter может использоваться с набором данных. каждый DataAdapter может использоваться для заполнения одного или нескольких объектов DataTable и разрешить обновления обратно в соответствующий источник данных. DataRelation и Ограничительные объекты могут быть добавлены в DataSet локально, что позволяет вам связать данные из разнородных источников данных. Например, DataSet может содержать данные из базы данных Microsoft SQL Server, IBM База данных DB2, предоставляемая через OLE DB, и источник данных для потоковой передачи XML. Один или несколько объектов DataAdapter могут обрабатывать связь с каждым источник данных.

Подробнее ...

"// Что делает метод Dispose ()?"

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

Выполняет определяемые приложением задачи, связанные с освобождением, освобождением или сбросом неуправляемых ресурсов.

Я бы предпочел с помощью оператора (см. Пример кода выше), потому что он проще, а также закрывает соединение и т. Д.

...