Reconexion a B.D.

25/07/2003 - 14:23 por Yop | Informe spam
Buenas tardes.
Como puedo saber si se ha caido la conexion de una base de
datos?
Un saludo y muchas gracias.

P.D. Ahora mismo tengo implementada una solucion, que es
hacer una select...pero hay alguna mejor?

Preguntas similare

Leer las respuestas

#1 Softjaen
25/07/2003 - 15:12 | Informe spam
"Yop" escribió:

Como puedo saber si se ha caido la conexion de una base de
datos?



Hola:

Si utilizas la biblioteca de ADO, comprueba el valor de la propiedad «State»
del objeto «Connection», la cual puede tomar los siguientes valores:

Constante Valor Descripción
==adStateClosed 0 Indica que el objeto está cerrado.
adStateOpen 1 Indica que el objeto está abierto.
adStateConnecting 2 Indica que el objeto está conectándose.
adStateExecuting 4 Indica que el objeto está ejecutando un
comando.
adStateFetching 8 Indica que se está obteniendo el conjunto de
filas del objeto.


If oCnn.State = adStateClosed Then
MsgBox "La conexión se ha caído."
End If

Un saludo

Enrique Martínez
[MS MVP - VB]
Respuesta Responder a este mensaje
#2 Yop
25/07/2003 - 15:38 | Informe spam

"Yop" escribió:

Como puedo saber si se ha caido la conexion de una base




de
datos?



Hola:

Si utilizas la biblioteca de ADO, comprueba el valor de


la propiedad «State»
del objeto «Connection», la cual puede tomar los


siguientes valores:

Constante Valor Descripción
==>adStateClosed 0 Indica que el objeto está


cerrado.
adStateOpen 1 Indica que el objeto está


abierto.
adStateConnecting 2 Indica que el objeto está


conectándose.
adStateExecuting 4 Indica que el objeto está


ejecutando un
comando.
adStateFetching 8 Indica que se está


obteniendo el conjunto de
filas del objeto.


If oCnn.State = adStateClosed Then
MsgBox "La conexión se ha caído."
End If

Un saludo

Enrique Martínez
[MS MVP - VB]


.




Muchas gracias Enrique, pero eso que me comentas y ya lo
he probado y no me cambia el valor del state del objeto
Connection. Incluso desabilitando la red...quitando el
cable... etc...
No se me ocurre otra cosaque hacer eso que te comento.
Un saludo y muchas gracias
Respuesta Responder a este mensaje
#3 Softjaen
25/07/2003 - 16:05 | Informe spam
"Yop" escribió:

pero eso que me comentas ya lo he probado y no me
cambia el valor del state del objeto
Connection. Incluso desabilitando la red...quitando el
cable... etc...



Pues, sinceramente, no lo entiendo. ¿?

Ahora mismo no lo puedo probar porque no tengo una red, pero el hecho de que
quites el cable de la red no significa que el objeto «Connection» esté
cerrado, al menos así lo entiendo, salvo que esté equivocado. Me imagino que
cuando desees ejecutar una consulta SQL contra el servidor de red es cuando
vas a obtener el error correspondiente.

Prueba a declarar la variable objeto tipo «Connection» con «WithEvents» y
comprueba los valores de los métodos «ConnectComplete» (cuando se inicia la
conexión) y «Disconnect» cuando finaliza la conexión.


Private WithEvents cnn As ADODB.Connection

Private Sub cnn_ConnectComplete(ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pConnection As ADODB.Connection)

' Conexión abierta
MsgBox adStatus
End Sub

Private Sub cnn_Disconnect(adStatus As ADODB.EventStatusEnum, _
ByVal pConnection As ADODB.Connection)

' Conexión cerrada
MsgBox pConnection.State
End Sub

Private Sub Form_Load()

' Establezco la conexión
Set cnn = New Connection

With cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=\\Servidor\Carpeta\Base1.mdb;"

' Abro la conexión
.Open
MsgBox .State

' Cierro la conexión
.Close
MsgBox .State

End With

End Sub

No se me ocurre otra cosa.

Enrique Martínez
[MS MVP - VB]
Respuesta Responder a este mensaje
#4 Rodacaps
25/07/2003 - 16:27 | Informe spam
hola, no he seguido muy bien la conversación pero es facil que te pase
eso.Hay que tener en cuenta que la red si no le envias un paquete o intentas
cada poco tiempo el ordenador no está constantemente chupando de la base de
datos. No se si lo captais pero creo que tendría que poner un timer y
consultar cada x tiempo la conexión, supongo que funcionaría.

Saludos

Rodacaps

Avda. del Cid, 10 Bajo
System Valencia

"Softjaen" escribió en el mensaje
news:

"Yop" escribió:

> pero eso que me comentas ya lo he probado y no me
> cambia el valor del state del objeto
> Connection. Incluso desabilitando la red...quitando el
> cable... etc...

Pues, sinceramente, no lo entiendo. ¿?

Ahora mismo no lo puedo probar porque no tengo una red, pero el hecho de


que
quites el cable de la red no significa que el objeto «Connection» esté
cerrado, al menos así lo entiendo, salvo que esté equivocado. Me imagino


que
cuando desees ejecutar una consulta SQL contra el servidor de red es


cuando
vas a obtener el error correspondiente.

Prueba a declarar la variable objeto tipo «Connection» con «WithEvents» y
comprueba los valores de los métodos «ConnectComplete» (cuando se inicia


la
conexión) y «Disconnect» cuando finaliza la conexión.


Private WithEvents cnn As ADODB.Connection

Private Sub cnn_ConnectComplete(ByVal pError As ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pConnection As ADODB.Connection)

' Conexión abierta
MsgBox adStatus
End Sub

Private Sub cnn_Disconnect(adStatus As ADODB.EventStatusEnum, _
ByVal pConnection As ADODB.Connection)

' Conexión cerrada
MsgBox pConnection.State
End Sub

Private Sub Form_Load()

' Establezco la conexión
Set cnn = New Connection

With cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=\\Servidor\Carpeta\Base1.mdb;"

' Abro la conexión
.Open
MsgBox .State

' Cierro la conexión
.Close
MsgBox .State

End With

End Sub

No se me ocurre otra cosa.

Enrique Martínez
[MS MVP - VB]



Respuesta Responder a este mensaje
#5 Yop
25/07/2003 - 16:29 | Informe spam

"Yop" escribió:

pero eso que me comentas ya lo he probado y no me
cambia el valor del state del objeto
Connection. Incluso desabilitando la red...quitando el
cable... etc...



Pues, sinceramente, no lo entiendo. ¿?

Ahora mismo no lo puedo probar porque no tengo una red,


pero el hecho de que
quites el cable de la red no significa que el


objeto «Connection» esté
cerrado, al menos así lo entiendo, salvo que esté


equivocado. Me imagino que
cuando desees ejecutar una consulta SQL contra el


servidor de red es cuando
vas a obtener el error correspondiente.

Prueba a declarar la variable objeto tipo «Connection»


con «WithEvents» y
comprueba los valores de los métodos «ConnectComplete»


(cuando se inicia la
conexión) y «Disconnect» cuando finaliza la conexión.


Private WithEvents cnn As ADODB.Connection

Private Sub cnn_ConnectComplete(ByVal pError As


ADODB.Error, _
adStatus As ADODB.EventStatusEnum, _
ByVal pConnection As ADODB.Connection)

' Conexión abierta
MsgBox adStatus
End Sub

Private Sub cnn_Disconnect(adStatus As


ADODB.EventStatusEnum, _
ByVal pConnection As ADODB.Connection)

' Conexión cerrada
MsgBox pConnection.State
End Sub

Private Sub Form_Load()

' Establezco la conexión
Set cnn = New Connection

With cnn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data


Source=\\Servidor\Carpeta\Base1.mdb;"

' Abro la conexión
.Open
MsgBox .State

' Cierro la conexión
.Close
MsgBox .State

End With

End Sub

No se me ocurre otra cosa.

Enrique Martínez
[MS MVP - VB]



.




Si el problema que tengo es el que si se me cae la red, o
hay problemas de red... o reinician el pc donde esta el
SQLServer... y mi cliente no hacen nada con el.
Pierde la conexion a base de datos.. da errores y no se
reconecta.
un saludo y muchas gracias
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida