Stack Overflow en español Asked by Bernardo Harreguy on December 18, 2021
?! tengo el problema de error en VB.NET, He intentado todo pero no sé cómo solucionarlo. Básicamente al intentar conectarme a la base de datos busco controlas los errores de conexión y al dar error de desconexión ejecuto un formulario donde da opciones a seguir para continuar la sentencia de MySQL,
a continuación el código:
Esto es el código que llama a todas las demás funciones siguientes, este sería el primer TRY:
Public Function consultaadatos(ByVal sql As String) As DataTable
Dim datos As New DataTable
Using conexion As New MySqlConnection(conexionstring)
reintentar:
Try
conexion.Open()
Catch ex As Exception
configurarsistema(ex.Message, ex.HelpLink, ex.StackTrace)
GoTo reintentar
End Try
Try
Using adaptador1 As New MySqlDataAdapter
adaptador1.SelectCommand = New MySqlCommand(sql, conexion)
For Each parametross As KeyValuePair(Of Object, parametro) In parametros
adaptador1.SelectCommand.Parameters.AddWithValue(parametross.Value.nombre, parametross.Key)
Next
If logbasededatos Then log(adaptador1.SelectCommand.CommandText,, "query")
adaptador1.Fill(datos)
End Using
Catch ex As Exception When logbasededatos
If logbasededatos Then log("error en consulta de datos ...",, "query")
mostrarerrordetransaccion(ex)
End Try
End Using
parametros.Clear()
Return datos
End Function
En limpio la conexion la llamo de la siguiente manera:
Using conexion As New MySqlConnection(conexionstring)
reintentar:
Try
conexion.Open()
Catch ex As Exception
configurarsistema(ex.Message, ex.HelpLink, ex.StackTrace)
GoTo reintentar
End Try
Si la conexión no es posible se ejecuta la función "configurarsistema", del cual el codigo es el siguiente:
Public Sub configurarsistema(Optional mensaje As String = "", Optional vinculo As String = "", Optional trace As String = "")
Dim form As New desconexion
form.mensaje.Text = mensaje
If vinculo IsNot Nothing Then form.ayuda.Text = vinculo
form.errortecnico.Text = trace
If System.Windows.Forms.Application.OpenForms.Count > 0 Then
form.ShowDialog(System.Windows.Forms.Application.OpenForms.Item(0))
Else
form.ShowDialog()
End If
End Sub
Este llama un formulario que da la opción de reintentar, reiniciar la aplicación, o bien configurar la base de datos de nuevo. El bucle sucede cuando se presiona en el botón de probar conexión, al haber cambiado la configuración
El código del botón probar es el siguiente:
Sub ProbarClick(sender As Object, e As EventArgs) Handles probar.Click
Using comunicacion As New mysqlcustom
If verificarconexion(server.Text & ";Port=" & puerto.Text, usua.Text, contra.Text, base.Text, True) Then
estado.Text = "Conexión existosa!"
Else
estado.Text = "Imposible conectar!"
End If
End Using
End Sub
La función "Verificarconexion" es la siguiente:
Public Function verificarconexion(Optional servidor1 As String = "", Optional usuario1 As String = "", Optional contrasena1 As String = "", Optional base As String = "", Optional mostrarerror As Boolean = False) As Boolean
Try
Using conexion As New MySqlConnection("Server=" & servidor1 & "; Uid=" & usuario1 & "; Pwd=" & contrasena1 & ";Connection Timeout=6000;Allow User Variables=True")
conexion.Open()
If base <> "" Then
Using query2 As New MySqlCommand("CREATE DATABASE IF NOT EXISTS `" & base & "`;USE `" & base & "`;", conexion)
query2.ExecuteNonQuery()
End Using
End If
conexion.Close()
Return True
End Using
Catch ex As Exception
If mostrarerror Then MsgBox(ex.Message, MsgBoxStyle.Exclamation, "Error al intentar conectar")
Return False
End Try
End Function
Al rellenar los datos y presionar el botón probar, el formulario se vuelve a abrir, dando lugar rellenar la configuración de nuevo y volver a presionar probar se llama a la funcion "configurarsistema".
Donde puede llegar a estar el error? alguien ve una solución?
Ni me voy a centrar en el resto de tu codigo... solo voy a ver la logica de esto:
Using conexion As New MySqlConnection(conexionstring)
reintentar:
Try
conexion.Open()
Catch ex As Exception
configurarsistema(ex.Message, ex.HelpLink, ex.StackTrace)
GoTo reintentar
End Try
Usando una conexion...
pruebo abrirla.. no abre.. me voy a configurar sistema...
Hago un goto.. (OMG!!!!)
vuelvo a probar abrir la conexion.. con los parametros viejos!!! nunca la reparametrice....
Esto, se veria mucho mejor asi...
dim conecto as bool = false;
while (!conecto)
Using conexion As New MySqlConnection(conexionstring)
Try
conexion.Open()
conecto = true
Catch ex As Exception
configurarsistema(ex.Message, ex.HelpLink, ex.StackTrace)
End Try
Answered by gbianchi on December 18, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP