Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/02/2008, 10:00
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

Aca esta IncidenciasBD.java con las clases isValid() y getResultado()

Código:
package com.midominio.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;
	
	//campos de la bd a mostrar
//	private String nroIncidencia;
//	private String fecha;
//	private String tema;
//	private String atendidoPor;
//	private String texto;
	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;
//				nroIncidencia = resultado.getString("NRO_INCIDENCIA");
//				fecha = resultado.getString("FECHA");
//				tema = resultado.getString("TEMA");
//				texto = resultado.getString("TEXTO");
//				atendidoPor = resultado.getString("ATENDIDO_POR");
			} 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;
	}

}
no se donde esta el error, sera que estoy cargando mal el resultSet?
Otra cosa, en el finally de ejecutarConsulta() teia para cerrar la coneccion el resultset y la sentencia (como veras esta comentado para que no los cierre porque me tiraba un error). Si quiero mantener todo esto abierto, hace falta escribir el finally? (dentro de las llaves del finally no hay nada, asi que pense que podria borrarlo)

Gracias, saludos