Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-06-2011
antigrondona antigrondona is offline
Miembro
 
Registrado: ene 2010
Posts: 47
Poder: 0
antigrondona Va por buen camino
Chequear conexion a sql

Hola amigos, simplemente necesito verificar la conexion a la base de datos para evitar errores al iniciar la aplicacion. Se me ocurre que la propiedad state del ado puede darme esta informacion pero no sé qué valores asume.
Gracias.
Responder Con Cita
  #2  
Antiguo 09-06-2011
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola antigrondona, la propiedad State puede tomar estos valores:

Código:
stClosed -> Connection object is inactive and not connected to a database.
stOpen -> Connection object is inactive, but connected to a database.
stConnecting -> Connection object is in the process of connecting to a database.
stExecuting -> Connection object is currently executing.
stFetching -> Connection object is retrieving data from the database
Sacado de la ayuda.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #3  
Antiguo 09-06-2011
antigrondona antigrondona is offline
Miembro
 
Registrado: ene 2010
Posts: 47
Poder: 0
antigrondona Va por buen camino
Estaba justo leyendo eso en la ayuda, pero al invocar esas prop, me da error de incompatibilidad.
ado.state:=stopened, me da ese error.
Responder Con Cita
  #4  
Antiguo 09-06-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Yo creo que al hacer el Open (que debes hacerlo igualmente para luego consultar el estado) ya puedes obtener si no tienes conexión. En ese caso ya puedes devolver el error.

Otra cosa, es cuando ya hayas realizado el Open inicial, consultar a posteriori si la conexión sigue abierta o se ha perdido; Pero tal como dices, al iniciar la aplicación, te debería bastar con capturar los errores del Open/Connect.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 09-06-2011
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por antigrondona Ver Mensaje
Estaba justo leyendo eso en la ayuda, pero al invocar esas prop, me da error de incompatibilidad.
ado.state:=stopened, me da ese error.
No puedes asignar un valor a esa propiedad (es de solo lectura), solo puedes ver que valores toma en un cierto momento

Código Delphi [-]
 If ado.state = [stClosed] then
  ...............................

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #6  
Antiguo 09-06-2011
antigrondona antigrondona is offline
Miembro
 
Registrado: ene 2010
Posts: 47
Poder: 0
antigrondona Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Yo creo que al hacer el Open (que debes hacerlo igualmente para luego consultar el estado) ya puedes obtener si no tienes conexión. En ese caso ya puedes devolver el error.

Otra cosa, es cuando ya hayas realizado el Open inicial, consultar a posteriori si la conexión sigue abierta o se ha perdido; Pero tal como dices, al iniciar la aplicación, te debería bastar con capturar los errores del Open/Connect.
Una vez indicada la cadena de conexion, cómo debería testear los errores?
por código por favor, si es posible.
Responder Con Cita
  #7  
Antiguo 09-06-2011
antigrondona antigrondona is offline
Miembro
 
Registrado: ene 2010
Posts: 47
Poder: 0
antigrondona Va por buen camino
Cita:
Empezado por Caro Ver Mensaje
No puedes asignar un valor a esa propiedad (es de solo lectura), solo puedes ver que valores toma en un cierto momento

Código Delphi [-] If ado.state = [stClosed] then ...............................


Saluditos
Me habia equivocado, ahora me hace el chequeo pero sólo si está abierta la conexión. Si corto manualmente la conexión, me debería dar cerrado pero no lo hace, queda intentando la conexion hasta que finalmente aborta.
Responder Con Cita
  #8  
Antiguo 09-06-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si estás utilizando ADO, al hacer un Open, captura los errores que se generan.
Algo así:

Código Delphi [-]
try
   ADOConn.Open;
except
  on E:EOLEException do begin
    // error 
    MessageDlg(Format('Error: %s'+#13+#10+'Código: %d',
      [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
  end;
end;

Te lo pongo de memoria.

También puedes utilizar los eventos del TADOConnection. OnConnectComplete, OnWillConnect, AfterConnect.

Prueba a poner algun mensaje en ellos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 09-06-2011
Avatar de oesqueda
oesqueda oesqueda is offline
Miembro
 
Registrado: dic 2007
Ubicación: Guadalajara, Mexico
Posts: 66
Poder: 17
oesqueda Va por buen camino
Paso una funcion para que revises si esta conectado tu TADOConnection.

Código Delphi [-]
Function ConectarDB(var AMsg:string):boolean;
begin
try
  ADOConnection.CLOSE;
  ADOConnection.connectionstring = 'CADENA DE CONEXION';
  ADOConnection.OPEN;
  AMsg := '';
except
  on e: exception do
    AMsg := e.message;
end;

result := ADOConnection.Connected;
end;

Pasas la variable AMSG y ahi obtienes el mensaje en caso de no conectarse.
__________________
OEsqueda

Última edición por oesqueda fecha: 09-06-2011 a las 17:31:46. Razón: Trate de ponerle el TAG de codigo pero no viene la funcion
Responder Con Cita
  #10  
Antiguo 09-06-2011
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por antigrondona Ver Mensaje
Me habia equivocado, ahora me hace el chequeo pero sólo si está abierta la conexión. Si corto manualmente la conexión, me debería dar cerrado pero no lo hace, queda intentando la conexion hasta que finalmente aborta.
Acabo de hacer la prueba y al hacer esto:

Código Delphi [-]
  ADOConnection1.Connected := False;

y ver despues el state me lo pone en stClosed.

también puedes hacerlo como te indica Neftali.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #11  
Antiguo 09-06-2011
antigrondona antigrondona is offline
Miembro
 
Registrado: ene 2010
Posts: 47
Poder: 0
antigrondona Va por buen camino
Cita:
Empezado por Neftali Ver Mensaje
Si estás utilizando ADO, al hacer un Open, captura los errores que se generan.
Algo así:

Código Delphi [-]try ADOConn.Open; except on E:EOLEException do begin // error MessageDlg(Format('Error: %s'+#13+#10+'Código: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0); end; end;


Te lo pongo de memoria.

También puedes utilizar los eventos del TADOConnection. OnConnectComplete, OnWillConnect, AfterConnect.

Prueba a poner algun mensaje en ellos.
EOLEException me da error, identificador no declarado;
Responder Con Cita
  #12  
Antiguo 09-06-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por antigrondona Ver Mensaje
EOLEException me da error, identificador no declarado;
Pulsa F1 y la ayuda te dirá que debes añadir la unit ComObj.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #13  
Antiguo 09-06-2011
antigrondona antigrondona is offline
Miembro
 
Registrado: ene 2010
Posts: 47
Poder: 0
antigrondona Va por buen camino
Muchas gracias, perfecto quedó.
Responder Con Cita
  #14  
Antiguo 09-06-2011
Avatar de oesqueda
oesqueda oesqueda is offline
Miembro
 
Registrado: dic 2007
Ubicación: Guadalajara, Mexico
Posts: 66
Poder: 17
oesqueda Va por buen camino
Y cual fue la definitiva? para que quede registrado para cualquiera que tenga esa duda y pueda resolver tambien su dilema

Saludos
__________________
OEsqueda
Responder Con Cita
  #15  
Antiguo 09-06-2011
antigrondona antigrondona is offline
Miembro
 
Registrado: ene 2010
Posts: 47
Poder: 0
antigrondona Va por buen camino
El código de Neftalí o la función que vos propusiste, las 2 me funcionaron.
Responder Con Cita
  #16  
Antiguo 10-06-2011
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Wink

Cita:
Empezado por oesqueda Ver Mensaje
Paso una funcion para que revises si esta conectado tu TADOConnection.

Código Delphi [-]Function ConectarDB(var AMsg:string):boolean; begin try ADOConnection.CLOSE; ADOConnection.connectionstring = 'CADENA DE CONEXION'; ADOConnection.OPEN; AMsg := ''; except on e: exception do AMsg := e.message; end; result := ADOConnection.Connected; end;


Pasas la variable AMSG y ahi obtienes el mensaje en caso de no conectarse.
Esta buena esta funciona... tambien me sirve...

Salu2
__________________
BlueSteel
Responder Con Cita
  #17  
Antiguo 10-06-2011
Avatar de oesqueda
oesqueda oesqueda is offline
Miembro
 
Registrado: dic 2007
Ubicación: Guadalajara, Mexico
Posts: 66
Poder: 17
oesqueda Va por buen camino
Talking

Mi estimado bluesteel a tus ordenes ahí me agregas en los creditos o el huevo de pascua.
Jejejeje un saido
__________________
OEsqueda
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como chequear la fecha de caducidad de mi aplicacion JoAnCa Varios 2 11-03-2009 15:52:17
Chequear ingreso de valor numerico rogisau25 Varios 1 28-02-2008 14:37:45
Chequear privilegios de administrador miguel gomez API de Windows 5 06-12-2006 13:20:05
Chequear existencia de una BD vichovi Conexión con bases de datos 3 23-09-2003 00:17:48
Chequear conexión a internet Walterdf Internet 12 14-05-2003 04:36:00


La franja horaria es GMT +2. Ahora son las 20:00:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi