Я бы не заполнял 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
Выполняет определяемые приложением задачи, связанные с освобождением, освобождением или сбросом неуправляемых ресурсов.
Я бы предпочел с помощью оператора (см. Пример кода выше), потому что он проще, а также закрывает соединение и т. Д.