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

问题描述 投票:0回答:3

我正在使用next子通过通过dataadapter使用datatable来填充组合框:

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

但是我要面对下一个味精:

无法连接到任何指定的MySQL主机但是当我手动打开连接时,它会起作用!

我知道带有(Fill)的dataadapter会打开和关闭连接本身,但我不知道为什么我的代码会发生这种情况。

顺便说一下,我尝试了许多方法来进行测试,但是结果相同,例如下一个代码:

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

谢谢

vb.net connection sqldataadapter
3个回答
0
投票

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


0
投票

如果将连接保持在使用该方法的本地位置,则可以使用Using ... End Using块控制何时关闭和释放该连接。您的连接可能已由该类中的另一种方法处理。

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

0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.