Foros del Web » Programación para mayores de 30 ;) » Java »

executeQuery(String) o execute()?

Estas en el tema de executeQuery(String) o execute()? en el foro de Java en Foros del Web. Tengo un problema con mi aplicacion, tengo un preparedStatement y un resultset, la coneccion con la base ya esta ok y carga el driver perfecto, ...
  #1 (permalink)  
Antiguo 11/01/2008, 09:24
 
Fecha de Ingreso: diciembre-2007
Mensajes: 36
Antigüedad: 16 años, 4 meses
Puntos: 0
Mensaje executeQuery(String) o execute()?

Tengo un problema con mi aplicacion, tengo un preparedStatement y un resultset, la coneccion con la base ya esta ok y carga el driver perfecto, supuestamente tendria que utilizar executeQuery(QUERY) pero cuando veo los valores que estan dentro de 'QUERY' es un valor hexa, me dijeron que tengo que utilizar sentencia.execute() directamente pero tampoco me deja, que hago??

aca esta el codigo:

ValidadorUsuario.java
Código:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet; 
import java.sql.SQLException;

public class ValidadorUsuario {
	
	private String usuario;
	private String password;
	private String nombre;
	private boolean valido = false;
	private Exception ultimaExcepcion;
	private boolean hayError = false;
	
	private boolean buscarElUsuarioYLaPass() throws SQLException{
            Connection coneccion = null;
            PreparedStatement sentencia = null;
            ResultSet resultado = null;
       
            String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
            String URL = "jdbc:derby:e:\\Usuarios";
            String QUERY = "SELECT PASSWORD, USUARIO FROM AGUSTIN.LOGIN WHERE USUARIO = ?";
        
            boolean existe = false;
       
            try {
                System.out.println("Cargando el driver..."); 	//agregado de prueba
        	Class.forName(DRIVER);
        	System.out.println("Cargado OK.");				//agregado de prueba
        	
        	System.out.println("Conectando...");			//agregado de prueba
                coneccion = DriverManager.getConnection(URL);
                System.out.println("URL: "+URL);				//agregado de prueba
            
                System.out.println("Preparando sentencia...");	//agregado de prueba
                sentencia = coneccion.prepareStatement(QUERY);
                sentencia.setString(1, usuario);
                System.out.println("Sentencia: " + sentencia);	//agregado de prueba
                resultado = sentencia.executeQuery(QUERY);    //valor de QUERY en hexa
                //resultado = sentencia.execute();    //no funciona,
                                                                          // no puede convertir de boolean a ResultSet

            if(coneccion!=null){
            	System.out.println("OK - Se conecto");		//agregado de prueba
            }
            
            if (resultado.next()&& password.equals(resultado.getString("PASSWORD"))){
            	nombre = resultado.getString("USUARIO");
            	existe = true;
            }
        } catch (Exception e) {
        		hayError = true;
        		ultimaExcepcion = 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 getUsuario(){
		return usuario;
	}
	
	public void setUsuario(String u){
		usuario = u;
	}
	
	public void setPassword(String u){
		password = u;
	}
	
	public String getNombre(){
		return nombre;
	}
	
	public boolean isValid(){
		if(valido) return true;
		try{
			hayError = false;
			valido = buscarElUsuarioYLaPass();
			
		}catch(Exception e){
			ultimaExcepcion = e;
			valido = false;
			hayError = true;
		}
		return valido;
	}
	
	public boolean isError(){
		return hayError;
	}
	public Exception getUltimaExcepcion(){
		return ultimaExcepcion;
	}
}
Que comando uso para pasar el query armado como corresponde?
  #2 (permalink)  
Antiguo 11/01/2008, 11:38
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Re: executeQuery(String) o execute()?

Es un PreparedStatement y estas ejecutando una consulta, asi que lo más lógico es:
Cita:
sentencia = coneccion.prepareStatement(QUERY);
sentencia.setString(1, usuario);
resultado = sentencia.executeQuery(); //SIN PARAMETROS, YA SABE QUE QUERY ES
Hay otras posibilidades, pero para tu caso esta es la más directa.

S!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:25.