mysql - ComboBox 未填充 MySQL 查询结果 - 如何解决该问题?

标签 mysql vb.net

我相信你一切都好。我想知道我做错了什么以及如何解决它。我使用下面的代码的目的是查询我的 MySQL 数据库并在组合框中显示表的一列。然后,当选择组合框中的该值时,我希望将所有关联的记录填充到表单上的其他控件中(我将为这部分创建一个单独的问题)。

现在,查询正在运行,但组合框尚未填充。我究竟做错了什么?请帮忙,谢谢。

这是我的代码:

    Private Sub RetrieveMySQLdata()

    Try
        Dim dbConn As New MySqlConnection
        Dim dbQuery As String = ""
        Dim dbCmd As New MySqlCommand
        Dim dbAdapter As New MySqlDataAdapter
        Dim dbTable As New DataTable
        If dbConn.State = ConnectionState.Closed Then
            dbConn.ConnectionString = String.Format("Server={0};Port={1};Uid={2};Password={3};Database=accounting", FormLogin.ComboBoxServerIP.SelectedItem, My.Settings.DB_Port, My.Settings.DB_UserID, My.Settings.DB_Password)
            dbConn.Open()
        End If

        dbQuery = "SELECT *" & _
                   "FROM cc_master INNER JOIN customer ON customer.accountNumber = cc_master.customer_accountNumber " & _
                   "WHERE customer.accountNumber = '" & TextBoxAccount.Text & "'"
        With dbCmd
            .CommandText = dbQuery
            .Connection = dbConn
        End With
        With dbAdapter
            .SelectCommand = dbCmd
            .Fill(dbtable)
        End With
        Dim i As Integer
        For i = 0 To dbTable.Rows.Count - 1
            ComboBoxCard.ValueMember = "ccNumber"

        Next
    Catch ex As Exception
        MessageBox.Show("A DATABASE ERROR HAS OCCURED" & vbCrLf & vbCrLf & ex.Message & vbCrLf & _
                    vbCrLf + "Please report this to the IT/Systems Helpdesk at Ext 131.")
    End Try

End Sub

最佳答案

您要在哪里填充ComboBox?我看到的唯一交互在这里:

For i = 0 To dbTable.Rows.Count - 1
    ComboBoxCard.ValueMember = "ccNumber"
Next

我猜它并没有做你认为它正在做的事情。一方面,您在循环中多次将 ValueMember 设置为同一值。语句中的任何内容都不会随着循环的每次迭代而改变,那么为什么要循环它呢?

更具体地说,ValueMember 实际上并不是任何类型的显示值。 It's used to indicate which field in the bound data should contain the value 。当您为缺少的控件提​​供DataSource 时,将使用此方法。

我假设 DataSource 应该是 dbTable,因此您可能希望执行以下操作:

ComboBoxCard.DataSource = dbTable
ComboBoxCard.ValueMember = "ccNumber"
ComboBoxCard.DisplayMember = "Some Other Field in the database"

我不记得您是否需要在这些语句之后在控件上显式调用.DataBind(),但我链接到的示例没有这样做,所以我将其省略.

本质上,您尝试在代码中执行的操作是循环遍历结果并将它们添加到ComboBox中。你不需要这样做。如果您只需将其 DataSource 指向正在使用的数据集并告诉它需要在该数据集中使用哪些字段,ComboBox 就能够在内部执行此操作。这称为data binding .

关于mysql - ComboBox 未填充 MySQL 查询结果 - 如何解决该问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12661262/

相关文章:

mysql - Codeigniter dbforge 库 - 将 db 用户分配给当前数据库并添加授予权限

php - 可更新的投票+解释数据库

mysql - 如何在 SQL 中操作 select 查询的结果?

php - 在单列中存储 IP 地址

c# - 是否可以默认隐藏类的属性,例如在 DataGridView 中?

c# - Winforms 应用程序中 RichTextBox 中的当前行号和列号

c# - 如何在 MP3 文件的任意位置插入特定持续时间的静音?

php - 如果现有范围内不存在给定数字,则插入记录

VB.NET 为什么要这样声明这个子例程?

asp.net - 从另一个应用程序更新 DotNetNuke 模块