我找到了几篇与我的问题相似的文章,并且我尝试了这些文章中的建议,但没有一篇对我有用。我所需要的似乎很简单直接。 (我可以使用SQL Server来完成相同的操作,而不能使用MySQL来完成。此“描述”信息必须来自MySQL数据库)
我有一个列表框,当用户单击列表框项时,我希望使用从MySQL数据库提取的值来更新“描述”标签。
我在模块中创建了一个公共子,并从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
答案 0 :(得分:0)
我也不知道是否还有其他问题,但这肯定是:
Dim cmd As MySqlCommand = New MySqlCommand("select Description from resourceaccess where tid = '" & ReportPicker.ListBox1.ValueMember & "' ", conn)
除了您应该在那里使用参数的事实之外,ValueMember
的使用不可能是正确的。那是一列的名称,而不是该列的值。您应该使用SelectedValue
,它是该列中所选项目的值。
答案 1 :(得分:-1)
这是有效的方法:
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