【发布时间】:2021-03-26 11:51:14
【问题描述】:
我想将我的 MySQL 连接到我的 VB.net。我正在使用登录表单。我已经给出了代码,但代码给了我这个错误消息:连接必须有效且打开。错误在 cmd.executereader() 中。我不知道为什么。请帮助我。
它的作品,但现在它不是,我不undertand。可能是版本问题?
这是我的代码:
Public cadenaConexion As String = "server=" & serverdb & ";database=" & db & ";user id=" & userdb & ";password=" & passdb & ";port=" & portdb & ""
Public conn As New MySqlConnection(cadenaConexion)
Public cmd As New MySqlCommand
Public dr As MySqlDataReader
Public Sub conectarse()
Try
conn.Open()
Catch ex As Exception
'MsgBox(ex.Message)
'MsgBox("Falla en la conexión con la base de datos ☹")
End Try
End Sub
Public Function desconectado()
Try
If conn.State = ConnectionState.Open Then
conn.Close()
Return True
Else
Return False
End If
Catch ex As Exception
MsgBox(ex.Message)
Return False
End Try
End Function
Public Sub consultar_id_usuario(ByRef cin As String)
desconectado()
conectarse()
cmd.Connection = conn
cmd.CommandType = CommandType.Text
cmd.CommandText = "select idusuario from usuarios where cin='" & cin & "' "
Try
dr = cmd.ExecuteReader()
Catch ex As Exception
MsgBox(ex.Message)
MessageBox.Show(ex.Message, "XXXX", MessageBoxButtons.OK, MessageBoxIcon.Information)
Dim ask As MsgBoxResult = MsgBox("Esta presentando problemas con la conexión, si está trabajando de forma externa podría verificar su conexión. Le gustaría verificar la conexión de su VPN volviendo a conectarse mediante el FortiClient VPN?", MsgBoxStyle.YesNo)
If ask = MsgBoxResult.Yes Then
Shell("C:\Program Files\Fortinet\FortiClient\FortiClient.exe")
End If
End Try
End Sub
这是表单的mi代码
Private Sub txtusuario_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txtusuario.KeyPress
If Asc(e.KeyChar) = Keys.Enter Then
e.Handled = True
End If
If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then
If txtusuario.Text <> "" Then
Try
consultar_id_usuario(txtusuario.Text)
If dr.Read Then
txtidusuario.Text = dr(0)
End If
Catch ex As Exception
MessageBox.Show("Existe un problema con la conexión a la base de datos, favor comuniquese con un administrador del sistema para una posible solución", "Mensaje del sistema", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End Try
llenarcombo()
End If
【问题讨论】:
-
如果 'conn.Open()' 失败,你不会知道,因为这些语句在异常处理程序中被注释掉了。 ''MsgBox(ex.Message)'