Verificar se Banco de Dados esta online antes de conectar
20/11/2009
0
para posterio envio ao banco da dados firebird.
o problema é o seguinte que verificar se o banco esta on-line antes de tentar enviar.
como posso fazer ja tentei try
scConn.open //SQLConnection
except
showmessage('Servidor off-line');
exit;
end; a aplicação travar
Paulo Barros.
Posts
26/11/2009
Perivaldo Martins
Tente assim:
if SQLCon1.ConnectionState = csStateOpen then
ShowMessage('Conectado!')
else
ShowMessage('Não conectado!!')
Boa sorte e bons códigos!
26/11/2009
Paulo Barros.
27/11/2009
Adriano Silva
Bom dia,
Pelo que eu entendi você quer saber se o server está no ar, é isso?
Caso seja isso o mais fácil é você dar um ping no servidor pelo IP (se for fixo) ou pelo host (se for dinâmico).
Abaixo segue a função:
function Ping: Boolean;
var
wsadt: wsadata;
HNDicmp: integer;
hndFile: integer;
Host: PHostEnt;
Destino: in_addr;
Retorno: integer;
ipHost: string;
IcmpCreateFile: function():integer; {$IFDEF WIN32} stdcall; {$ENDIF}
IcmpCloseHandle: procedure(var handle:integer);{$IFDEF WIN32} stdcall; {$ENDIF}
IcmpSendEcho: function(var handle:integer; endereco:DWORD; buffer:variant; tam:WORD; IP:IPINFO; ICMP:ICMPECHO; tamicmp:DWORD; tempo:DWORD):DWORD;{$IFDEF WIN32} stdcall; {$ENDIF}
begin
Result := False;
//coloca o ip do servidor
ipHost := '192.168.0.1';
HNDicmp := LoadLibrary('ICMP.DLL');
if (HNDicmp <> 0) then
begin
@IcmpCreateFile := GetProcAddress(HNDicmp,'IcmpCreateFile');
@IcmpCloseHandle := GetProcAddress(HNDicmp,'IcmpCloseHandle');
@IcmpSendEcho := GetProcAddress(HNDicmp,'IcmpSendEcho');
if (@IcmpCreateFile=nil) or (@IcmpCloseHandle=nil) or (@IcmpSendEcho=nil) then
begin
FreeLibrary(HNDicmp);
end;
end;
Retorno := WSAStartup($0101,wsadt);
if (Retorno <> 0) then
begin
WSACleanup();
FreeLibrary(HNDicmp);
end
else
begin
Destino.S_addr := inet_addr(Pchar(ipHost));
if (Destino.S_addr = 0) then
Host := GetHostbyName(PChar(ipHost))
else
Host := GetHostbyAddr(@Destino,sizeof(in_addr), AF_INET);
Result := not (host = nil);
end;
FreeLibrary(HNDicmp);
WSACleanup();
end;
Eu uso essa função em um de meus sistemas para efetuar o ping.
Abraço...
08/12/2009
Fernando
Acho que seria complicado vc salvar em outro local e depois salvar no banco. Isso envolve muitas outras coisas... A não ser que o projeto tenha sido preparado para isso ou que vc está planejando isso desde o inicio.
Fernando Medeiros
http://fernandomedeiros.com.br/blog
10/12/2009
Perivaldo Martins
Tente trabalhar com ClientSocket, acho que o uso desse componente pode lhe ajudar já q vc quer saber o status do servidor, on/off, vc poderia tentar obter uma resposta pelo IP e Porta utilizada por exemplo por seu SGBD.
Boa sorte e bons códigos.
Clique aqui para fazer login e interagir na Comunidade :)