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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-12-2010
Avatar de DriverOp
DriverOp DriverOp is offline
Miembro
 
Registrado: ago 2007
Posts: 93
Poder: 17
DriverOp Va por buen camino
Controlar excepción ZEOS

Estoy usando ZEOS para conectar a una base de datos MySQL.
Tengo este código:
Código Delphi [-]
  ZQuery1.Active:=false;
  ZQuery1.SQL.Clear;
  ZQuery1.SQL.AddStrings(Memo1.Lines);
  try
    ZQuery1.Active:=true;
  except
// Y acá qué pongo?
  end;
  Label1.Caption:=Estado[ZQuery1.Active];
Necesito controlar cualquier error que se produzca al ejecutar una sentencia SQL pero por más que busco aquí como en el resto de Internet la documentación de ZEOS es de escasa a nula.
Sé que MySQL devuelve un número de error, necesito saber cómo obtener ese número usando ZEOS.
No puedo cambiar de componentes porque estoy reparando una aplicación que ya los usa.
Gracias.
Responder Con Cita
  #2  
Antiguo 21-12-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
mensaje

para controlar los errores puedes hacerlo asi
Código Delphi [-]
try
//instruccion a ejecurar
except
     on E:EOleException do
      begin
      MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
      end;
   end;

de esta forma te captura el codigo de error y el mensaje

Última edición por microbiano fecha: 21-12-2010 a las 00:25:00. Razón: codigo
Responder Con Cita
  #3  
Antiguo 21-12-2010
Avatar de DriverOp
DriverOp DriverOp is offline
Miembro
 
Registrado: ago 2007
Posts: 93
Poder: 17
DriverOp Va por buen camino
Gracias por responder pero ZEOS no genera una EOleException.
Responder Con Cita
  #4  
Antiguo 22-12-2010
Avatar de DriverOp
DriverOp DriverOp is offline
Miembro
 
Registrado: ago 2007
Posts: 93
Poder: 17
DriverOp Va por buen camino
Parece que me he topado con la pesadilla "Open Source". I Hate Open Source.
Responder Con Cita
  #5  
Antiguo 22-12-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por DriverOp Ver Mensaje
Gracias por responder pero ZEOS no genera una EOleException.
Ok, pero se puede declarar la variable "E" de tipo "Exception" que es la clase Madre de todas las clases que se encargan de las Excepciones en delphi y así lograr lo que uno quiera; sea cual sea el tipo y Clase de excepcion que se genere igual lo capturás ; eso es lo bello del polimorfismo.
Algo así:
Código Delphi [-]
 try
//instruccion a ejecurar
except
     on E:Exception do //<- Mi objeto "E" es de tipo "Exception" 
      begin
      MessageDlg(Format('Error: %s    Codigo: %d', [E.Message, E.ErrorCode]), mtError, [mbOK], 0);
      end;
   end;
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #6  
Antiguo 24-12-2010
Avatar de DriverOp
DriverOp DriverOp is offline
Miembro
 
Registrado: ago 2007
Posts: 93
Poder: 17
DriverOp Va por buen camino
He hecho algo mejor.
Me he zambullido en el código de ZEOS y encontré dónde está declarada la excepción que se eleva cada vez que hay un error. La clase es EZSQLException y está declarada en ZDbcIntfs. Agregando esa unidad a la uses ya es posible acceder al objeto de error propio de ZEOS. Luego me ha quedado así:
Código Delphi [-]
  ZQuery1.Active:=false;
  ZQuery1.SQL.Clear;
  ZQuery1.SQL.AddStrings(Memo1.Lines);
  try
    ZQuery1.Active:=true;
  except
        on E:EZSQLException do
            Memo2.Lines.Add('Error: '+IntToStr(E.ErrorCode)+' '+E.Message);
  end;
También sirve para controlar los errores de conexión:
Código Delphi [-]
  try
    ZConnection1.Connect;
  except
    on E:EZSQLException do
        Memo2.Lines.Add('Error: '+IntToStr(E.ErrorCode)+' '+E.Message);
  end; // try
Espero que esto le sirva al que venga después de mi
Responder Con Cita
  #7  
Antiguo 24-12-2010
Avatar de microbiano
microbiano microbiano is offline
Miembro
 
Registrado: sep 2008
Ubicación: Mexico D.F
Posts: 349
Poder: 16
microbiano Va por buen camino
siempre si genera exception jejejejeje
Responder Con Cita
  #8  
Antiguo 27-12-2010
Avatar de DriverOp
DriverOp DriverOp is offline
Miembro
 
Registrado: ago 2007
Posts: 93
Poder: 17
DriverOp Va por buen camino
Cita:
Empezado por microbiano Ver Mensaje
siempre si genera exception jejejejeje
Cuando se usa el driver de MySQL sí las genera
Responder Con Cita
Respuesta



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
excepcion con ado raffagia Conexión con bases de datos 2 12-02-2008 02:23:31
Excepcion con ADO SidedTermita Conexión con bases de datos 11 12-12-2007 02:21:04
Excepción en JSP david.rguez JAVA 1 14-02-2007 22:21:02
Controlar Tiempo de Carga en Mysql -> Zeos -> Delphi LuCkY_007 MySQL 3 07-09-2006 14:51:07
excepcion nenufer Conexión con bases de datos 6 16-05-2006 22:01:38


La franja horaria es GMT +2. Ahora son las 02:11:57.


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