我发现了一些与我的问题相似的文章,我尝试了这些文章中的建议,但没有一篇对我有效。我需要的似乎相当简单明了。(我可以用SQL Server完成同样的操作,只是不能用MySQL。这个"描述"信息必须来自MySQL数据库(
我有一个列表框,当用户点击列表框项目时,我希望用从MySQL数据库中提取的值更新一个"描述"标签。
我在Module中创建了一个公共子,并从Listbox1_SelectedIndexChanged事件(也尝试了Listbox1_mouseclick事件(调用该子。
然而,我所尝试的一切都不会更新标签。如有任何建议,我们将不胜感激。
以下是用于提取并尝试填充标签的代码:
Dim conn As New MySqlConnection(My.Resources.MySqlstr)
Try
conn.Open()
Dim cmd As MySqlCommand = New MySqlCommand("select Description from resourceaccess where tid = '" & ReportPicker.ListBox1.ValueMember & "' ", conn)
Dim reader As MySqlDataReader = cmd.ExecuteReader()
While reader.Read()
ReportPicker.Label3.Text = reader.GetString("Description")
End While
reader.Close()
Catch ex As MySqlException
MessageBox.Show(ex.Message)
Finally
conn.Close()
End Try
我不知道是否也有其他问题,但这肯定是:
Dim cmd As MySqlCommand = New MySqlCommand("select Description from resourceaccess where tid = '" & ReportPicker.ListBox1.ValueMember & "' ", conn)
除了你应该在那里使用一个参数之外,ValueMember
的使用不可能是正确的。这是列的名称,而不是该列中的值。您应该使用SelectedValue
,它是所选项目的该列中的值。
以下是工作原理:
Dim cs As String = My.Resources.MySqlstr
Dim stm As String = "select Description from resourceaccess where resource = '" & ReportPicker.ListBox1.Text & "' "
Dim conn As MySqlConnection = New MySqlConnection(cs)
Try
conn.Open()
Dim cmd As MySqlCommand = New MySqlCommand(stm, conn)
ReportPicker.Label3.Text = Convert.ToString(cmd.ExecuteScalar())
Catch ex As MySqlException
MessageBox.Show(ex.Message)
Finally
conn.Close()
End Try