簡體   English   中英

DataAdapter 不會使用 Fill 方法打開連接本身

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

我正在使用 next sub 通過 dataadapter 使用數據表來填充組合框:

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 主機,但是當我手動打開連接時,它可以工作!!

我知道 dataadapter with (Fill) 打開和關閉連接本身,但我不知道為什么我的代碼會發生這種情況。

順便說一句,我嘗試了很多方法來測試,但結果相同,例如下一個代碼:

    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

我發現我的代碼有問題,我將連接字符串放在用於檢查連接的函數中,為此我需要至少調用一次該函數以使一切正常工作。

非常感謝大家提供的所有信息,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM