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-01-2018
acanogal acanogal is offline
Registrado
 
Registrado: May 2006
Posts: 3
Poder: 0
acanogal Va por buen camino
Conocer si un programa está conectado en local o remoto

Hola a todos y Feliz 2018!!

Actualmente para saber si un programa se ejecuta en local o remoto usamos la siguiente función:
Código Delphi [-]
class function TSqlConfig.EstoyEnServidor: Boolean;
var
  vBaseDatos:TFDConnection;
  vConfig: TSqlConfig;
begin
  //Intento una conexion con la base de datos en modo local (localhost)
  vConfig := TSqlConfig.ReadIni;
  if Assigned(vConfig) then
    try
      try
        vBaseDatos:=TFDConnection.Create(nil);
        vBaseDatos.Params.Assign(TSqlConfig.ConnectionParams('localhost',vConfig.Port,vConfig.Path));
        Result := vBaseDatos.Ping;
      except
        On Exception do
          Result := false;
      end
    finally
      vBaseDatos.Free;
    end;
end;

Evidentemente, cuando la conexión es remota se genera una excepción y el consiguiente retardo en el tratamiento de la excepción, además del tiempo de conexión.

¿Conocéis alguna forma más eficiente de hacer esto?
Responder Con Cita
  #2  
Antiguo 09-01-2018
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: Sep 2004
Ubicación: Medellín - Colombia
Posts: 3.466
Poder: 18
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
No.

La unica forma de saber si hay conexion es conectandose.

Sin embargo, se puede jugar un poco sobre COMO NOTIFICAR el hecho. En tu caso, estas haciendo una llamada sincronica. Hacerlo asincronico es mas "eficiente" de miras al cliente. Tambien depende de que tan *preciso* quieres que sea la evaluacion.

EL tema es reconocer que aunque leas EstoyEnServidor y te diga que si, un MILISEGUNDO DESPUES PUEDE SER NO. Osea, que SIEMPRE estas evaluando el PASADO.

Si estas haciendo el chequeo para mostrar a el usuario puede ser "optimista" y no preocuparte por cambios en los ultimos segundos/minutos (junto a evaluar si el OS reporta caida en la conexion es mas que suficiente).

Si lo "necesitas" pa saber si puedes o no hacer una llamada remota....

ESO ES IMPOSIBLE.

La UNICA forma de saber con certeza si hay conexcion, es conectandose. La UNICA forma de saber si un llamada remota se ejecuta, es ejecutando la llamada remota.

TODO LO DEMAS ES ESPECULATIVO.
__________________
Nuevo Blog.
Ahora en Twitter!.
Responder Con Cita
  #3  
Antiguo 10-01-2018
acanogal acanogal is offline
Registrado
 
Registrado: May 2006
Posts: 3
Poder: 0
acanogal Va por buen camino
Ok. Gracias por la respuesta.

Si se me ocurre otro modo de hacer lo pondré aquí para otros.
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
Saber si un PC esta conectado Alexander API de Windows 4 14-07-2011 17:16:49
saber quien esta conectado a mi programa delphi ingabraham Varios 25 21-06-2011 23:12:35
IdUDPServer Saver IP Local conectado cliente wuepe Internet 1 03-01-2010 02:58:08
Sincronizar contenido de dos directorios(local-remoto) maxvera Internet 6 04-10-2007 19:46:27
Saber si esta conectado Kaesbu Internet 1 22-09-2003 14:09:45


La franja horaria es GMT +2. Ahora son las 23:38:54.


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