将多表填入数据集?

时间:2018-03-25 10:17:56

标签: database vb.net dataset oledbdataadapter

我的代码存在问题,这会将多个表填入我的dataset。它将我的数据库的表格中包含的所有内容仅加载到dataset中的一个表格中。我的代码如下所示。如何将这些表从数据库加载到具有相同数量的表和内容的数据集

Private Sub Filldataset()
Private cnn As OleDbConnection
Private dt As New DataTable
Private da As New OleDbDataAdapter
Private cmd As New OleDbCommand
Private ds As New DataSet
    Dim tblrestrictions As String() = New String() {Nothing, Nothing, Nothing, "TABLE"}
    Dim userTables As DataTable = Nothing
    userTables = cnn.GetSchema("Tables", tblrestrictions)
    Dim i As Integer
    For i = 1 To userTables.Rows.Count - 1 Step 1
        cnn = New OleDbConnection(Str)
        cnn.Open()
        cmd = cnn.CreateCommand
        cmd.CommandText = "select * from" & " " & userTables.Rows(i)(2).ToString
        dt.Clear()
        da.SelectCommand = cmd
        da.Fill(dt)
        da.Fill(ds)
    Next
    cnn.Close()
    MessageBox.Show(ds.Tables.Count)
End Sub

1 个答案:

答案 0 :(得分:0)

可以在其他地方创建连接,但直到您使用它们之后才能直接打开或关闭。您必须为Oledb应用程序调整此代码。

Private Sub GetData()
        cn.Open()
        Dim dt As DataTable = cn.GetSchema("Tables")
        cn.Close()
        Dim ds As New DataSet
        Dim row As DataRow
        For Each row In dt.Rows
            Dim strTableName As String = row(2).ToString
            Dim strSQL As String = "Select * From " & strTableName
            Dim cmd As New SqlCommand(strSQL, cn)
            Dim da As New SqlDataAdapter
            da.SelectCommand = cmd
            da.Fill(ds, strTableName)
        Next
        Debug.Print(ds.Tables.Count.ToString)
End Sub

我在本地设置了几个你想要扩展到类的变量,比如数据集