Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
组合框不是';t正在填充MySQL查询结果-如何解析它?_Mysql_Vb.net - Fatal编程技术网

组合框不是';t正在填充MySQL查询结果-如何解析它?

组合框不是';t正在填充MySQL查询结果-如何解析它?,mysql,vb.net,Mysql,Vb.net,我相信你们都很好。我想知道我做错了什么,以及如何修复它。下面代码的目的是查询mymysql数据库并在组合框中显示表的一列。然后,当选择组合框中的该值时,我希望将所有关联的记录填充到表单上的其他控件中(我将为此部分创建一个单独的问题) 现在,查询正在运行,但组合框没有填充。我做错了什么?请帮忙,谢谢 这是我的密码: Private Sub RetrieveMySQLdata() Try Dim dbConn As New MySqlConnection

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

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

这是我的密码:

    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对象设置数据源。而不是此代码:

Dim i As Integer
For i = 0 To dbTable.Rows.Count - 1
    ComboBoxCard.ValueMember = "ccNumber"
Next
ComboBoxCard.DataSource = dbTable
ComboBoxCard.ValueMember = "ccNumber"
ComboBoxCard.DisplayMember = "(some other column if you want)"
使用如下代码:

Dim i As Integer
For i = 0 To dbTable.Rows.Count - 1
    ComboBoxCard.ValueMember = "ccNumber"
Next
ComboBoxCard.DataSource = dbTable
ComboBoxCard.ValueMember = "ccNumber"
ComboBoxCard.DisplayMember = "(some other column if you want)"

看起来您没有为ComboBox对象设置数据源。而不是此代码:

Dim i As Integer
For i = 0 To dbTable.Rows.Count - 1
    ComboBoxCard.ValueMember = "ccNumber"
Next
ComboBoxCard.DataSource = dbTable
ComboBoxCard.ValueMember = "ccNumber"
ComboBoxCard.DisplayMember = "(some other column if you want)"
使用如下代码:

Dim i As Integer
For i = 0 To dbTable.Rows.Count - 1
    ComboBoxCard.ValueMember = "ccNumber"
Next
ComboBoxCard.DataSource = dbTable
ComboBoxCard.ValueMember = "ccNumber"
ComboBoxCard.DisplayMember = "(some other column if you want)"

您试图在哪里填充
组合框
?我看到的唯一互动是:

For i = 0 To dbTable.Rows.Count - 1
    ComboBoxCard.ValueMember = "ccNumber"
Next
我猜这不是你想象的那样。首先,在循环中多次将
ValueMember
设置为相同的值。语句中的任何内容都不会随着循环的每次迭代而改变,那么为什么要循环它呢

更具体地说,
ValueMember
实际上不是任何类型的显示值。当您为控件提供一个缺少的
数据源时,将使用此选项

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

ComboBoxCard.DataSource = dbTable
ComboBoxCard.ValueMember = "ccNumber"
ComboBoxCard.DisplayMember = "Some Other Field in the database"
我不记得在这些语句之后是否需要显式调用控件上的
.DataBind()
,但是我链接到的示例没有这样做,因此我将省略它


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

您试图在哪里填充
组合框?我看到的唯一互动是:

For i = 0 To dbTable.Rows.Count - 1
    ComboBoxCard.ValueMember = "ccNumber"
Next
我猜这不是你想象的那样。首先,在循环中多次将
ValueMember
设置为相同的值。语句中的任何内容都不会随着循环的每次迭代而改变,那么为什么要循环它呢

更具体地说,
ValueMember
实际上不是任何类型的显示值。当您为控件提供一个缺少的
数据源时,将使用此选项

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

ComboBoxCard.DataSource = dbTable
ComboBoxCard.ValueMember = "ccNumber"
ComboBoxCard.DisplayMember = "Some Other Field in the database"
我不记得在这些语句之后是否需要显式调用控件上的
.DataBind()
,但是我链接到的示例没有这样做,因此我将省略它


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

您做错的第一件事是使用内联SQL查询。我以为您提供了一个解决方案。但你是对的。我这样做是因为我还没有学会任何其他的方法——我还在学习。因为你还在学习,你会想了解“SQL注入攻击”以及如何预防/避免它们。这将使您了解如何不使用内联SQL查询。谢谢。你做错的第一件事是使用内联SQL查询。我以为你在提供解决方案。但你是对的。我这样做是因为我还没有学会任何其他的方法——我还在学习。因为你还在学习,你会想了解“SQL注入攻击”以及如何预防/避免它们。这将使您了解如何不使用内联SQL查询。谢谢,谢谢大卫,谢谢你对我的回复。我不知道ComboBox能够自己处理记录的循环。谢谢David,谢谢你的回复。我没有意识到ComboBox能够自己处理记录的循环。