Ver Mensaje Individual
  #3 (permalink)  
Antiguo 18/02/2008, 09:02
Onuris
 
Fecha de Ingreso: diciembre-2007
Mensajes: 36
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: ResultSet no abierto. Operación 'next' no permitida. Verifique que AutoCommit sea

Tenes razon, perdon, aca esta la clase IncidenciasBD:

Código:
package com.mercosuronline.accesoabase;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class IncidenciasBD {

	private String idCliente;
	private boolean valido = false;
	private boolean hayError = false;
	
	ResultSet resultado = null;
	
	private boolean ejecutarConsulta() throws SQLException{
		boolean existe = false;
		
		Connection coneccion = null;
		PreparedStatement sentencia = null;
		
		
		String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
		String URL = "jdbc:derby:e:\\Usuarios";
		String QUERY = 	"SELECT * FROM AGUSTIN.INCIDENCIAS WHERE ID_CLIENTE = ? ORDER BY NRO_INCIDENCIA DESC";
		
		try{
			System.out.println("Iniciando DRIVER "+DRIVER+"...");
			Class.forName(DRIVER);
			System.out.println("Driver iniciado - Conectando a URL "+URL+"...");
			coneccion = DriverManager.getConnection(URL);
			coneccion.setAutoCommit(false);
			System.out.println("Coneccion exitosa - Iniciando QUERY "+QUERY+"...");
			sentencia = coneccion.prepareStatement(QUERY);
			System.out.println("QUERY preparado - Seteando OBJECT consultaCuit "+idCliente+"...");
			sentencia.setString(1, idCliente);
			System.out.println("Ejecutando sentencia "+QUERY+"...");
			resultado = sentencia.executeQuery();
			System.out.println("Sentencia "+QUERY+" ejecutada exitosamente.");
			
			if(resultado.next()){
				//si encontro
				existe = true;
			} else {
				existe = false;
			}
		} catch (Exception e){
			e.printStackTrace();
		} finally {
			if(resultado != null) resultado.close();
			if(sentencia != null) sentencia.close();
			if(coneccion != null) coneccion.close();
		}
		
		return (existe);	
	}
	
	//getters y setters
	
	public String getIdCliente(){
		return idCliente;
	}
	public void setIdCliente(String c){
		idCliente = c;
	}
	
	public boolean isValid(){
		if(valido) return true;
		try{
			valido = ejecutarConsulta();
			hayError = false;
		}catch(Exception e){
			valido = false;
			hayError = true;
		}
		return valido;
	}
	
	public boolean isError(){
		return hayError;
	}
	
	public void limpiarConsulta(){
		idCliente = null;
		valido = false;
	}

	public ResultSet getResultado() {
		return resultado;
	}
}
Ahora si, getResultado() devuelve el ResultSet 'resultado', el cual se carga con la consulta al llamar a isValid(), que a su vez llama a ejecutarConsulta() y carga a 'resultado' en la linea 'resultado = sentencia.executeQuery();'
Estoy bien no? Donde esta la falla?