DataAdapter 不使用 Fill 方法打开连接本身

The DataAdapter doesn't open the connection itself with Fill Method

我正在通过数据适配器使用数据表来使用下一个子项来填充组合框:

Public Sub Me_Sub_CboFill(ByVal Cbo As ComboBox, ByVal SqlStr As String, ByVal Dm As String, ByVal Vm As String)
    Cbo.DataSource = Nothing
    xAdapter = New MySqlDataAdapter(SqlStr, Conn)
    Dim Dt As New DataTable
    xAdapter.Fill(Dt)

    If Dt.Rows.Count = 0 Then Conn.Close()

    Cbo.DataSource = Dt
    Cbo.DisplayMember = Dm
    Cbo.ValueMember = Vm

End Sub

但我面临下一条信息:

unable to connect to any of the specified MySQL hosts but when I open the connection manually, it works!!

我知道带有 (Fill) 的数据适配器会自行打开和关闭连接,但我不知道为什么我的代码会发生这种情况。

顺便说一句,我尝试了很多方法来测试它,但结果相同,如下一个代码:

    dim dt as new datatable
    Dim xx As New MySqlDataAdapter(SqlNat, Conn)
    MsgBox(Conn.State)
    xx.Fill(Dt)

谢谢

首先,if 语句应该不存在,如果您仍想使用它,请用 "end if" 关闭它,否则您的代码将无法运行。 其次,如果那是一个组合框,为什么要声明 cbo.datasource = nothing???你想删除内容吗?请改用 cbo.clear() ,然后您可以将数据 table 用作数据源。另外 cbo.displaymember = "Dm" 你需要那些报价。

如果您将连接保持在使用它的方法的本地,您可以控制它何时关闭并使用 Using...End Using 块处理。您的连接可能已被 class.

中的另一种方法处理掉
Public Sub Me_Sub_CboFill(ByVal Cbo As ComboBox, ByVal SqlStr As String, ByVal Dm As String, ByVal Vm As String)
    Cbo.DataSource = Nothing
    Dim Dt As New DataTable
    Using Conn As New MySqlConnection("Your conntection string"),
            xAdapter As New MySqlDataAdapter(SqlStr, Conn)
        xAdapter.Fill(Dt)
    End Using
    Cbo.DisplayMember = Dm
    Cbo.ValueMember = Vm
    Cbo.DataSource = Dt
End Sub

我发现我的代码有问题 我将连接字符串放在我用来检查连接的函数中,为此我需要至少调用该函数一次才能使一切正常工作。

感谢大家提供的所有信息 最好的,