SOS!!!!!!!!!!!!!!!!!!!!!!

Iratxo
01 de Diciembre del 2005
Muy buenas!
Estoy realizando una aplicación cliente servidor con acceso a Bases de Datos y mi problema es el siguiente: en un método de una clase destinada exclusivamente al acceso a datos tengo dos deletes. Si ejecuto la aplicación en modo depuración no tengo ningún problema, sin embargo si lo ejecuto normal solo me ejecuta el primer delete! he probado de varias formas y nada,
no lo entiendo, se supone que en los dos modos de ejecución la salida debería ser la misma no?
Utilizo JDeveloper 10g

muchas gracias!

IVA
01 de Diciembre del 2005
TRATA DE DESCRIBIR MEJOR EL PROBLEMA Y EL ERROR EN SI PARA QUE TE PODAMOS AYUDAR

Iratxo
01 de Diciembre del 2005
Esta es la clase de acceso a datos situada en la parte servidor: utilizo objetos para contener los datos, y concretamente para comunicar el cliente y el servidor mando siempre objetos ClaseContenedor, que tiene una variable "accion" que especifica el tipo de accióna realizar sobre la BD (consulta, modificacion, borrado, crear), y referencias a otros objetos.
Las BD es muy sencillita, lo que nos ocupa: una tabla tarea, que no tiene más que el codigot (clave) y una descripción. Y tarea_usuario, con referencias a las tareas y a los usuarios. Lo que pasa es que cuando no hay referencias a las tareas (en tarea_usuario) pues me gustaría borrar tb la tarea a la que hacía referencia, si no menudo marrón se iba a montar...
Incluyo los dos métodos: primero le llamo a claseTareaUsuarioBorrar(.....) y alli comprueba si hay más referencias a la tarea. Si no las hubiera, debería borrar la tarea tb.
El problema es que si ejecuto depurando el programa, me lo hace todo de maravilla, pero si lo ejecuto (run) normal, pues solo me borra la tupla de tarea_usuario, y la tarea ahí se queda.....
no sé si podreis ayudarme, pero de todas formas muchísimas gracias aunque sea por intentarlo!
otra cosilla ya que estoy... qué debería de especificar como controlador JDBC y URL base de datos si quiero conectar esta aplicación en un servidor linux con Mysql????
mil gracias!!!

public class ClaseAccesodatos {
//nombre del controlador JDBC y URL de la base de datos
static final String CONTROLADOR_JDBC ="sun.jdbc.odbc.JdbcOdbcDriver";// "com.ibm.db2j.jdbc.DB2jDriver";
static final String URL_BASEDEDATOS ="jdbc:odbc:BDTareas";

//Declarar objetos Connection y Statement para acceder a
// la base de datos y realizar consultas
private Connection conexion;
private Statement instruccion;
private String sql;

public ClaseAccesodatos() {
}
//Conectar a la base de datos
private void conectarBD(){
//cargamos el driver
try
{
Class.forName(CONTROLADOR_JDBC); //registrarlo
}
catch(ClassNotFoundException e){};
}

public ClaseContenedor claseTareaBorrar(ClaseContenedor clase){
ClaseContenedor retorno =new ClaseContenedor("ERROR","ERROR");
conectarBD();
try{
conexion=DriverManager.getConnection(URL_BASEDEDATOS);
instruccion=conexion.createStatement();
sql = "delete from tarea where codigot= "+clase.getClaseTarea().getCodigot();
int i = instruccion.executeUpdate(sql);
instruccion.close();
retorno = new ClaseContenedor("RETORNO","");
}
catch(SQLException e){
retorno = new ClaseContenedor("ERROR","ERROR");
}
return retorno;
}
public ClaseContenedor claseTareaUsuarioBorrar(ClaseContenedor clase){
// Parámetros ==> ClaseTareausuario lleno.
// Aquí hay que comprobar si al borrar existe alguna tarea con codigot igual a clase.
// Si no existe desde aquí borramos la tarea en ClaseTarea.
// E ==> lleno
//NE ==> vacío
ClaseContenedor retorno =new ClaseContenedor("ERROR","ERROR");
conectarBD();
try{
conexion=DriverManager.getConnection(URL_BASEDEDATOS);
instruccion=conexion.createStatement();
//primero eliminamos la tarea
sql= "delete from tarea_usuario where nombre='"+clase.getClaseTareaUsuario().getNombre()+"'and codigot="+clase.getClaseTareaUsuario().getCodigot();
int i = instruccion.executeUpdate(sql);
instruccion.close();
retorno = new ClaseContenedor("RETORNO","");

boolean encontrado= true;
conexion=DriverManager.getConnection(URL_BASEDEDATOS);
instruccion=conexion.createStatement();
sql = "select from tarea_usuario where
codigot="+clase.getClaseTareaUsuario().getCodigot();
ResultSet rs = instruccion.executeQuery(sql);
if (!rs.next()){
encontrado=false;

}
instruccion.close();
if (!encontrado){
retorno = claseTareaBorrar(new ClaseContenedor("Borrar","",new ClaseTarea(clase.getClaseTareaUsuario().getCodigot(),"")))
}

}
catch(SQLException e){
retorno =new ClaseContenedor("ERROR","ERROR");
}

return retorno;
}

}