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

problemas con las excepciones SQL

Estas en el tema de problemas con las excepciones SQL en el foro de Java en Foros del Web. HOLA! Quiero realizar la conexion con la base de datos y me da errores cuando quiero acceder a la BB DD. Lo que tengo es ...
  #1 (permalink)  
Antiguo 26/01/2009, 12:44
 
Fecha de Ingreso: enero-2009
Mensajes: 4
Antigüedad: 15 años, 3 meses
Puntos: 0
problemas con las excepciones SQL

HOLA!
Quiero realizar la conexion con la base de datos y me da errores cuando quiero acceder a la BB DD.

Lo que tengo es varias clases y una que es la que realiza los accesos, la clase en cuestion es la siguiente:

Código:
public class MySQL {
    private Connection conexion;
    
    public MySQL() {
        try {
            Class.forName("org.gjt.mm.mysql.Driver");
        } catch (java.lang.ClassNotFoundException e) {

            System.err.print("ClassNotFoundException: ");

            System.err.println(e.getMessage());

        }
        try {
            conexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/concesionario", "root", "Xob0ss2j");

        } catch (SQLException ex) {

            System.err.println("SQLException: " + ex.getMessage());

        } finally {

            try {

                conexion.close();

            } catch (SQLException ex) {

                System.err.println("SQLException: " + ex.getMessage()) ;

}

}

    }


    public String validarUsuario(String nombre, String contrasena) throws SQLException{
        Statement s = conexion.createStatement();
        ResultSet rs = s.executeQuery ("select rol_user from t_usuarios where id_user = '" + nombre + "' and password = '" + contrasena + "';");
        return rs.getString(1);
    }

}
y la calse que la llama es la siguiente:

Código:
public class Usuario {
    private String nombre;
    private String password;
    private String rol;
    private Empleado empleado;

    public Usuario(String nombre, String password) {
        this.nombre = nombre;
        this.password = password;
    }

    public Usuario(String nombre, String password, String rol, Empleado empleado) {
        this.nombre = nombre;
        this.password = password;
        this.rol = rol;
        this.empleado = empleado;
    }

    public Empleado getEmpleado() {
        return empleado;
    }

    public void setEmpleado(Empleado empleado) {
        this.empleado = empleado;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getRol() {
        return rol;
    }

    public void setRol(String rol) {
        this.rol = rol;
    }

    public boolean validar() throws SQLException, ClassNotFoundException{
       rol = new MySQL().validarUsuario(this.nombre, this.nombre);
       if (rol.isEmpty()){
           return false;
       }else{
           return true;
       }
    }

}
¿Por que no me rula?

GRACIAS
  #2 (permalink)  
Antiguo 26/01/2009, 13:37
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: problemas con las excepciones SQL

Hola,

Posiblemente, después de ejectuar el Query, el ResultSet está antes de la primera posición, (antes del primer registro), hay que mover el resultset hasta la posición siguiente, si no existiera ningún registro devuelve falso.

Cita:
Iniciado por gato83 Ver Mensaje
Código:
    public String validarUsuario(String nombre, String contrasena) throws SQLException{
        Statement s = conexion.createStatement();
        ResultSet rs = s.executeQuery ("select rol_user from t_usuarios where id_user = '" + nombre + "' and password = '" + contrasena + "';");
        // return rs.getString(1);
        return rs.next() ? rs.getString(1) : "";    }

}
O lo que es lo mismo:

Código:
if (rs.next()) {
  return rs.getString(1);
} else {
  return "";
}
Dependiendo de la aplicación, te aconsejo que valides los valores que obtienes en 'nombre' y 'password' antes de concatenarlos con la instrucción SQL.

Saludos,
  #3 (permalink)  
Antiguo 26/01/2009, 14:18
 
Fecha de Ingreso: febrero-2001
Mensajes: 18
Antigüedad: 23 años, 2 meses
Puntos: 0
Respuesta: problemas con las excepciones SQL

Poné el stack Trace de la excepción así podemos ver un poco más claramente que puede estar pasando!.

Saludos!!
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 15:44.