Java - Duda SQL

   
Vista:

Duda SQL

Publicado por Jorge (11 intervenciones) el 04/02/2008 18:01:44
Buenas:
¿Alguien porfavor me puede explicar que tengo mal de este codigo?Aunque en el campo UsuAdministrador ponga no,si llamo ala funion me responde siempre true.Como lo podria acer para que me devolviera true solo si en la base de datos es si?
muchas gracias

public boolean EsAdministrador(String p)
{

this.ConectarBD();
try
{

String consulta = "SELECT UsuAdministrador FROM Usuarios WHERE UsuPass ='"+p+"'";
ResultSet rs = sentencia.executeQuery(consulta);
if(rs.next()==false)
{
rs.close();
sentencia.close();
return false;
}
else
{
if (!p.contentEquals(rs.getString("UsuPass")))
{
sentencia.close();
return false;
}
else
{

if(rs.getString("UsuAdministrador")!="'si'")
{
rs.close();
return true;

}

}
}

}

catch (SQLException e)
{
System.out.println("Error SQL en la búsqueda de usuarios" + e.getMessage());
e.printStackTrace(System.out);
}
this.DesconectarBD();
return false;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda SQL

Publicado por Carlos Gamarra (1 intervención) el 04/02/2008 18:25:18
Cambio la forma de comparar:

if(rs.getString("UsuAdministrador")!="'si'")

Por:

if(rs.getString("UsuAdministrador").equalsIgnoreCase("si"));

Con eso debe funcionar.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda SQL

Publicado por Oscar Mauricio Gomez Acevedo (47 intervenciones) el 04/02/2008 18:29:27
Primero no entiendo para que haces esto

if (!p.contentEquals(rs.getString("UsuPass")))
{
sentencia.close();
return false;
}

si esto es lo mismo que estas haciendo en la consulta

y el condicional con el que validas lo haria asi:

if(rs.next()){
if(rs.getString("UsuAdministrador").equals("Si"){
rs.close();
sentencia.close();
return true;
}
else{
rs.close();
sentencia.close();
return false;
}
else{
rs.close();
sentencia.close();
return false;
}

Segun mi humilde entender debe funcionar y recuerda siempre que hagas comparaciones de String utiliza el equals, asi te evitas la fatiga!!!

Espero te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Duda SQL

Publicado por Tom (911 intervenciones) el 05/02/2008 17:33:37
Obviamente, rs.getString("UsuPass") te devuelve NULL porque UsuPass no está entre los campos obtenidos en la select.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar