PDA

Ver la Versión Completa : Control de errores en bd


Isaac
11-02-2004, 18:05:03
Me gustaría saber las excepciones que hay en cuanto a bases de datos con el try. En particular me interesan las de cuando se intenta borrar un registro cuya clave es clave foránea (sin integridad referencial), o cuando lo intento con un registro que no existe. Sé que es:
try
adqquery.execsql
...
except
ahora irían las excepciones, que no me las sé
end;

Lepe
11-02-2004, 19:20:55
errores BDE, IB ¿?

Isaac
11-02-2004, 19:22:27
Errores en consultas SQL. Yo uso ACCESS y MYSQL

marto
11-02-2004, 22:11:12
Haciendo un borrado de un registro se pueden producir multitud de errores, pero como te comenta Lepe, el sistema que uses para acceder a tu BD es fundamental. En cualquier caso, el sistema de control de errores de Delphi no es la chapuza de VB. Si se produce calquier excepición en tu código, esta cortará el flujo de ejecución hasta que encuentre un bloque try que la controle. En ese momento se ejecutará lo que tengas en el except del bloque. Por ejemplo


try
algo_que_produce_error;
except
ShowMessage('trata de arrancarlo Carlos!!!!');
end;


se mostrará el mensaje se produzca el error que sea. Si quieres capturar cualquier excepcion y saber información del error puedes hacer lo siguiente:


try
algo_que_produce_error;
except
on E: Exception do
ShowMessage(E.Message);
end;


Esta técnica te permite capturar en E cualquier excepción del tipo Exception, es decir qualquiera. E apunta a la excepción, por lo tanto puedes acceder a sus propiedades.
Si quieres capturar sólo un tipo de excepción puedes hacer algo así:


try
algo_que_produce_error;
except
on E: EDBException do
ShowMessage(E.Message);
else
raise;
end;


Este ejemplo captura las excepciones de tipo EDBException (que es una clase que hereda de Exception) y muestra su mensaje, si se produce otro tipo de excepción, la relanza.

Isaac
12-02-2004, 11:15:25
Muchas gracias por responder

ronson
17-02-2004, 19:19:34
Hola amigos yo he puesto lo siguiente:



MAinForm.DBGlobal.Params.Values['USERNAME'] := txtNombre.Text;
MAinForm.DBGlobal.Params.Values['PASSWORD'] := txtPassword.Text;
conexion.Visible:=false;

try
MAinForm.DBGlobal.Open;
except
ShowMessage('Error abriendo la base de datos: cerrando aplicación');
Application.Terminate;
end;


Y resulta que cuando el usuario o el password no son correctos el ODBC me da un error pero no me acepta la exception, es decir no me sale el mensaje ERROR ABRIENDO LA BASE DE DATOS.....

MI BASE DE DATOS ES FIREBIRD.


SALUDOS.