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
我发现我的代码有问题
我将连接字符串放在我用来检查连接的函数中,为此我需要至少调用该函数一次才能使一切正常工作。
感谢大家提供的所有信息
最好的,
我正在通过数据适配器使用数据表来使用下一个子项来填充组合框:
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
我发现我的代码有问题 我将连接字符串放在我用来检查连接的函数中,为此我需要至少调用该函数一次才能使一切正常工作。
感谢大家提供的所有信息 最好的,