用MySQL中的数据填充组合框

用MySQL中的数据填充组合框,mysql,vb.net,combobox,dataset,xampp,Mysql,Vb.net,Combobox,Dataset,Xampp,我试图用mysql中的表中的数据填充我的组合框,这是我的代码,我看不出问题出在哪里。我的组合框没有返回任何数据,它只是空白 Private Sub cbxCompanyName_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cbxCompanyName.SelectedIndexChanged Dim con As New MySqlConnection Dim c

我试图用mysql中的表中的数据填充我的组合框,这是我的代码,我看不出问题出在哪里。我的组合框没有返回任何数据,它只是空白

    Private Sub cbxCompanyName_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cbxCompanyName.SelectedIndexChanged
    Dim con As New MySqlConnection
    Dim constr As String = "Server=localhost;database=ba-solutions;user id=root;password="
    Try
        con.ConnectionString = constr
        con.Open()
    Catch ex As SqlException
        MsgBox(ex.Message)
    End Try

    Dim StrSql As String = "SELECT Company Name FROM client_details"
    Dim cmd As New MySqlCommand(StrSql, objconnection)
    Dim da As MySqlDataAdapter = New MySqlDataAdapter(cmd)
    Dim dt As New DataTable("Client_details")

    da.Fill(dt)


    If dt.Rows.Count > 0 Then

        cbxCompanyName.DataSource = dt
        cbxCompanyName.DisplayMember = "Company Name" 'What is displayed

    End If

End Sub
试试这个

如果dt.Rows.Count>0,则

    cbxCompanyName.DataSource = dt
    **cbxCompanyName.DataBind();**

End If
试试这个

如果dt.Rows.Count>0,则 cbxCompanyName.DataSource=dt cbxCompanyName.DisplayMember=公司名称 cbxCompanyName.ValueMember=公司名称 如果结束
您的sql命令文本错误。当列名或表名中有空格时,应将名称括在一个特殊字符中,该字符用于分隔列名的开始和结束

Dim StrSql As String = "SELECT `Company Name` FROM client_details"
Dim cmd As New MySqlCommand(StrSql, objconnection)
Dim da As MySqlDataAdapter = New MySqlDataAdapter(cmd)
Dim dt As New DataTable("Client_details")
对于MySql,这个特殊字符是数字键盘上的backtick keep pressed ALT和press 096

当然,最好避免使用这些空间。
如果还不太晚,我建议更改该列名,删除空格

私有子cbxCompanyName\u SelectedIndexChangedsender As System.Object,e As System.EventArgs处理cbxCompanyName.SelectedIndexChanged Dim con作为新的MySQL连接 Dim constr As String=Server=localhost;数据库=ba解决方案;用户id=根用户;密码= 尝试 con.ConnectionString=cont 未结 捕获ex作为SqlException MsgBoxex.Message 结束尝试

Dim StrSql As String = "SELECT Company Name FROM client_details"
Dim cmd As New MySqlCommand(StrSql, objconnection)
作为OleDbDataReader=cmd.ExecuteReader的Dim dr

 While dr.Read
     cbxCompanyName.items.add(dr.item(0))
 End While
 dr.close()

在组合框中放置时,上述所有内容都是正确的,但有一点被忽略。为了立即访问该列表,必须为所选项目设置起始索引,否则在收集ComboBox1.Text的内容时,您将返回“System.Data.DataRowView”的内容

da.SelectCommand = cmd
ds = New DataSet
Dim dt As New DataTable
da.Fill(ds, Table)
ComboBox1.DataSource = ds.Tables(0)
ComboBox1.DisplayMember = "imgURL"
conn.Close()
da.Dispose()
conn.Dispose()
ComboBox1.SelectionStart = 0 'This is what is missing from above.
Dim current_imgURL As String = "http://10.1.1.10/photos/" & ComboBox1.Text
PictureBox1.Image = New Bitmap(New IO.MemoryStream(New WebClient().DownloadData(current_imgURL)))

本例加载带有图像文件名的组合框,并从服务器位置提取它们。在我从MySql中填充第一个图像并遇到此问题后,我想从组合框中预加载第一个图像,因为只有在用户单击组合框时才会触发选择索引,而不是在加载数据时触发选择索引。

试试这段代码,我希望它能起作用

Dim con As New MySqlConnection("connection string")
Dim da As New MySqlDataAdapter("SELECT * FROM tableName", con)
Dim dt As New DataTable

da.Fill(dt)
ComboBox1.DisplayMember = "fieldName to show in ComboBox"enter code here
ComboBox1.DataSource = dt
TextBox1.DataBindings.Add("Text", dt, "fieldName to show in textbox")

您好,我发现错误“databind”不是system.windows.form.ComboBox的成员。请使用数据读取器执行sql命令,然后添加此代码,而不是“If”部分。cbxCompanyName.items.addreadername[0];谢谢,我添加了这一点,但我认为这也是一种情况,即在加载表单时我没有加载组合框。在cbxCompanyName.SelectedIndexChanged事件中这样做有点奇怪,也许你应该将代码移到form.Load事件中。在你建议之前,我也这样做了,我唯一的问题是,即使在使用frmClientDetails.DGVClient.Columns0.HeaderCell.Value=公司名称之后,我也无法在datagrid视图中手动更改列名。你是说frmClientDetails.DGVClient.Columns0.HeaderText=公司名称吗?这是我之前的做法,它对列名没有任何影响,它应该是我绑定数据集的地方吗?我不明白,我们是将datatable绑定到组合框,而不是datagridview。你能解释一下吗?你在第一个答案中告诉我在我的列名中不要有空格,我改了。我使用空格的唯一原因是无法手动更改datagrid中的列名。我在你给我的第二个回复中使用了代码,但没有效果,你能告诉我确切的位置吗?