我有一个列表,当我启动程序时自动填充:
lstTrabajadores.Items.Clear()
ServerConnection()
Try
Dim MyCommand As New MySqlCommand("select * from caburga.trabajadores", MyConnection)
Dim MyReader As MySqlDataReader
MyReader = MyCommand.ExecuteReader
If MyReader.HasRows Then
While MyReader.Read
lstTrabajadores.Items.Add(MyReader.GetString("nombreCompleto"))
End While
Else
lstTrabajadores.Items.Add("No hay trabajadores registrados.")
End If
MyReader.Close()
MyReader.Dispose()
MyConnection.Close()
Catch ex As MySqlException
MsgBox("Error " & Environment.NewLine & ex.Message & Environment.NewLine & "Contáctese con el administrador del sistema.")
Finally
MyConnection.Dispose()
End Try
现在,我已经关闭并处理了我使用过的所有读者。问题是我想用链接到列表内容的数据填充文本字段。
该程序的工作原理如下,我启动程序,它填充列表,我点击列表项,我得到一个"没有当前查询数据阅读器" VB.Net错误,以及"已经有一个与此Connection关联的开放DataReader,必须先关闭",MySQL异常。
当我点击列表项时,这是列表选择索引更改的代码:
Try
ServerConnection()
Dim MyCommand As New MySqlCommand("select * from caburga.trabajadores where nombreCompleto= '" & lstTrabajadores.SelectedItem & "'", MyConnection)
Dim MyReader As MySqlDataReader
MyReader = MyCommand.ExecuteReader
MyReader.Read()
txtRUT.Text = MyReader.GetInt32("rut")
txtDV.Text = MyReader.GetInt32("dv") <<THIS IS WHERE I GET THE ERROR.>>
txtNombreTrabajador.Text = MyReader.GetString("nombreTrabajador")
txtApellido1Trabajador.Text = MyReader.GetString("apellidoPaterno")
txtApellido2Trabajador.Text = MyReader.GetString("apellidoMaterno")
MyReader.Close()
MyReader.Dispose()
MyConnection.Close()
Catch ex As MySqlException
MsgBox("Error " & Environment.NewLine & ex.Message & Environment.NewLine & "Contáctese con el administrador del sistema.")
Finally
MyConnection.Dispose()
End Try
任何人,请指出我的错误。如果您需要查看更多我的代码,我将很乐意更新此问题。
我感谢任何帮助。
更新:我在ServerConnection()上打开了与MySQL的连接,这是模块上的一个函数。
Function ServerConnection()
Try
MyConnection.ConnectionString = "server=myip;user=root;password=password;database=caburga"
MyConnection.Open()
Return True
Catch ex As Exception
Return False
End Try
End Function