我正在使用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)
谢谢
首先,if语句不存在,如果您仍要使用它,请用“ end if”将其关闭,否则您的代码将无法工作。其次,如果那是一个组合框,为什么要声明cbo.datasource =什么?您要删除内容吗?请改用cbo.clear(),然后可以将数据表用作数据源。另外cbo.displaymember =“ Dm”,您需要这些配额。
如果将连接保持在使用该方法的本地位置,则可以使用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
我发现我的代码有问题我将连接字符串放在用于检查连接的函数中,为此,我需要至少调用一次该函数,以确保一切正常工作。
感谢您提供的所有信息最好,