Visual Basic.NET - Demasiada espera para conectar a B.D. en un servidor

 
Vista:
sin imagen de perfil
Val: 29
Ha aumentado su posición en 2 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Demasiada espera para conectar a B.D. en un servidor

Publicado por apacheco (98 intervenciones) el 04/12/2017 09:45:11
Buenos dias.
El problema que tengo en una instalación específica es que cuando trabajan con el programa, realizado en Visual Basic y usando una B.D. MySql situada en un servidor externo a la empresa, si tiene abierto el programa y dejan de utilizarlo durante un cierto espacio de tiempo al volver a usarlo tarda mucho en conectarse a la B.D.

Os adjunto la función de conexión que llevo utilizando mas de 10 años sin problema:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Public Function Conectar() As Boolean
	Dim errores As Integer
	Dim conectado As Boolean
 
	Dim rsCon As MySqlDataReader
 
	On Error Resume Next
 
	Err.Clear()
 
	errores = 0
	conectado = False
 
	sqlCmd = New MySqlCommand("Show Tables", sqlCon)  ' sqlCon es la variable Pública de conexión
	rsCon = sqlCmd.ExecuteReader()
	rsCon.Close()
 
	If Err.Number <> 0 Then
 
		Do While (errores < 3) And (Not conectado)
 
			Err.Clear()
 
			If sqlCon.State = 1 Then
				sqlCon.Close()
			End If
 
			sqlCon = Nothing
 
			sqlCon = New MySqlConnection
			sqlCon.ConnectionString = strConex
			sqlCon.Open()
 
			If Err.Number = 0 And _
					sqlCon.State = 1 Then
				conectado = True
 
			Else
				errores = errores + 1
 
			End If
		Loop
 
		If Not conectado Then
			Conectar = False
 
		Else
			Conectar = True
 
		End If
 
	Else
		Conectar = True
 
	End If
 
	If Not Conectar Then
		MostrarError("Módulo General", "Conectar", Err.Number, _
					"ERROR AL CONECTAR CON LA BASE DE DATOS", _
					MessageBoxIcon.Stop + MessageBoxButtons.OK, _
					"CONEXION A BASE DE DATOS")
 
	End If
 
End Function

El servidor donde esta situada la B.D., presumo que tiene un time out que es el que debe impiedir que funcione la conexión para la consulta "Show Tables" de forma inmediata, porque al cabo de un cierto tiempo (interminable para el usuario) si vuelve a funcionar.

¿Conocéis otra forma de hacerlo?.

Gracias de antemano.

P.D. Una forma (para mi algo chapucera) sería abrir la conexión al necesitarla en un módulo y cerrarla al salr de dicho modulo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder