Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/06/2008, 12:50
Avatar de zempox
zempox
 
Fecha de Ingreso: mayo-2007
Mensajes: 32
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Java y Sentencia SQL...

Cuando "i" vale 0 es porque ha habido un error durante la ejecución de la sentencia SQL. Por tanto, intento filtrarlo, pero la línea del final que dice "descripcionError = e.getMessage();" me da error en "e", porque dice que puede no estar inicializado. ¿Qué puedo entonces hacer? Es que estoy iniciándome en Java, y aún no domino el TRY - CATCH.

Por cierto, ahora de este modo sí que me detecta que ha habido un error al borrar la entrada en la BD, pero quiero que me almacene el mensaje de error que me devuelve la BD.

Muchas gracias por vuestra paciencia y ayuda. Salu2!![/QUOTE]

public boolean realizarAccion2(String comandoSql)
{
Statement comando;
int i=-1;
//deberias declarar
//String descripcionError = "";
try {
comando = conexion.createStatement();
i = comando.executeUpdate(comandoSql);
comando.close();
}
catch(Exception e) {
descripcionError=e.getMessage();
//si aqui asignas el error a descripcionError ......

}

if(i != 0) {
descripcionError = "";
return(true);
}
else {
//aqui si ha habido un error dentro del bloque catch ya no debes recuperar el error de nuevo e. //ya esta fuera de contexto
//si quieres ver el error usa System.out.println(descripcionError)
// o si no pintalo con un JOptionPane.showMessageDialog(null, descripcionError);
descripcionError = e.getMessage(); /// esto ya no
return(false);
}

} // END_realizarAccion2

claro no esta inicializado, si te das cuenta "e" pertenece al bloque try/catch especificamente esta declarado "dentro del bloque catch" cuando sales del bloque intentas que e.getMessage() te devuelva un mensaje (mensaje que ya capturaste en el catch) y no lo va a hacer ya que es una variable fuera de ambito. mejor dicho esta fuera de contexto solo puedes usar e. cuando esta dentro del bloque catch despues no !!!! , deberia mostrar tambien un mensaje si se elimino correctamente el registro o si no se elimino nada......:D

otra cosa usa catch(SQLException e) en lugar de catch(Exception e) el primero te va a devolver el error ocurrido en el DBMS cualquiera sea el que uses mysql, sqlserver, etc etc

espero que te sirva ... saludos