PDA

Ver la Versión Completa : excepciones con TADOConnection


JuanPa1
18-07-2007, 17:50:31
Hola, estoy realizando una conexión a una base de datos sql server y necesito que mi aplicación no se me caiga cuando el servidor de base de datos sql server este abajo...
Tengo el siguiente código que aparentemente debería controlarme eso pero no se porque no lo hace...
ALguién me puede decir que estoy haciendo mal o como debería hacerlo le agradecería..

ADOQualitySQL.Connected := False;
ADOQualitySQL.ConnectionString:= 'Provider=MSDASQL.1;Persist Security Info=False;User ID=usuario;Password=clave;Data Source=DSN_ODBC';
Try
ADOQualitySQL.Connected := True;
except on e:exception do
Begin
showmessage('Error de conexión con Base de Datos :' + E.Message);
ADOQualitySQL.Connected := False;
Exit;
End;
end;

//El error que me da es que no se existe el servidor sql server o se ha denegado el acceso al mismo

poliburro
18-07-2007, 19:34:26
Con "No se caiga" a que te refieres?

JuanPa1
18-07-2007, 19:38:12
Me refiero a que mi aplicación pueda procesar ese error que me da y emitir un mensaje propio de mi aplicación y no se cierre como esta ocurriendo actualmente...

ivan022481
18-07-2007, 22:16:38
En teoria esta bien lo que haces, yo tengo algo similiar y funciona bien. Ojo que si lo ejecutas desde Delphi el error que te va a tirar no es lo mismo que cuando lo ejecutas desde el .exe compilado, quizas eso te puede confundir.

try
dmConeccion.adoConeccion.Close; //Compruebo que el servidor este activo
dmConeccion.adoConeccion.ConnectionTimeout := 15;
sCon := 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist'; //string de los parametros del ADOConnection
sCon := sCon + 'Security Info=False;Initial Catalog='+NombreDeLaDB+';Data Source='+NombreDelServidor+'';
dmConeccion.adoConeccion.ConnectionString := sCon; //aca le asigno el string a el adoConnection
dmConeccion.adoConeccion.Open;
dmconexion.adqConsulta.SQL.Text := 'select * from usuarios'; //hago una consulta a la base para verificar la conexion
dmAuxiliar.adqConsulta.open;
except
ShowMessage('No se ha podido establecer la conexión a la base de datos. '+#13+#10+'Verifique los parametros de conexión o comuniquese con el responsable');
end;

JuanPa1
18-07-2007, 22:41:50
Si tienes razón, cuando lo ejecuto desde el .exe compilado no me da el error y si me funciona bien.
SOlo explicame algo y no te molesto más por hoy..je..je..
Que es lo que hace esta propiedad ConnectionTimeout del Tadoconnection?
dmConeccion.adoConeccion.ConnectionTimeout := 15;


Saludos.

ivan022481
18-07-2007, 22:49:09
Son los segundos que va a tardar en responder con el error si no se conecta a la base de datos, si le pones 15 el ADoconection tratar de conectarse, si lo hace antes de los 15 segundos todo bien, pero si al cabo de 15 segundos no se conecto da el error. Saludos.