Como pegar data/hora do servidor e Conexão de banco
9 respostas
S
SINVAL
Pessoal, tenho 2 dúvidas:
1º - Como posso pegar data e hora do servidor e não do client ?
2º - Minhas aplicações utiliza uma classe que cede as conexões do banco de dados, em minhas aplicãções DAO solicitam a conexão, acessa os dados e libera a conexão, esta forma esta correta ? Se sim, quando tenho sucessivos acessos ao banco ao mesmo tempo este processo de pegar e liberar a conexão não prejudica a performance ? Existe outra forma ?
Escreva uma transação no server que retorne a data e hora desejados.
Se você usar um connection pool através do datasource (isso normalmente é implementado pelos application servers, como o JBoss ou o J2EE Reference Implementation, ou o WebSphere, WebLogic etc. ) não prejudica a performance; é o método recomendado.
S
SINVAL
Deculpe-me mas minha transação é Java Application (Swing) e não estou utilizando servidor de aplicações, neste caso como faço em ambos casos ?
T
thingol
Você está fazendo uma aplicação Swing que acessa diretamente o banco? Para pegar a data e hora do banco de dados use algum comando SELECT (a sintaxe correta SQL depende do seu banco).
Para usar “connection pooling” use algo como o DBCP ( http://jakarta.apache.org/commons/dbcp/ ).
S
SINVAL
Entendi, mas tenho um problema com esta aplicação, ela tem a função de mostrar a hora na tela constantemente, isto é, ter o horário atualizando minuto a minuto por se tratar de ponto eletrônico de funcionários e eles deverão “picar” o cartão no seu horário de turno e este turno deve estar dentro do limite de horas que estaria mostrando no Relógio (tela), assim sendo, vc não acha que ficaria muito lento fazer acesso constantemente no banco ? Existe alguma outra forma ? :shock:
fmeyer
metodo rapido e porco …
" select now() "no mysql … ou a função correspondente no seu banco de dados da uma olhada no help
T
thingol
O correto mesmo seria essa máquina estar com o relógio sincronizado (bom, essa sincronização depende do sistema operacional e do acesso que ela tem à Internet, se ela usar algum cliente de NTP - acho que o Linux tem um cliente de NTP, e o Windows XP e 2003 podem se sincronizar automaticamente se tiverem acesso ao servidor time.windows.com, ou a um servidor de Active Directory no caso de uma máquina Windows XP/2003).
Mas uma forma seria a seguinte:
Você sabe que se sua máquina tiver alguma diferença de tempo com o servidor, ela deve estar com o relógio adiantado ou atrasado de um valor aproximadamente constante (digamos que ela esteja sempre 4 minutos e 30 segundos atrasada). Você poderia consultar a máquina servidora uma vez a cada 5 minutos, e mostrar o horário da própria máquina cliente, mais a diferença de tempo entre as duas máquinas nos instantes em que a máquina não estiver acessível. Ou então acessar a máquina servidora a cada 30 segundos - se você precisa de uma precisão de 1 minuto, acessar a cada 30 segundos já é mais que suficiente.
S
SINVAL
Entendi, mas é a única forma de ficar pegando a data e hora é através do select ?
T
thingol
Se sua máquina é Windows e a máquina do servidor é Windows também, e se você pode chamar o comando net time (talvez você não tenha as permissões corretas), e se você chamar esse comando muito de vez em quando (porque é muito lento - leva alguns segundos), então você não precisa fazer o select. Por exemplo:
Se sua máquina é Windows e a máquina do servidor é Windows também, e se você pode chamar o comando net time (talvez você não tenha as permissões corretas), e se você chamar esse comando muito de vez em quando (porque é muito lento - leva alguns segundos), então você não precisa fazer o select. Por exemplo: