Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/03/2009, 10:14
rocklove
 
Fecha de Ingreso: marzo-2009
Mensajes: 8
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: PreparedStatement

Ok aqui va el método completo.

public Usuarios LoginPrepared(String usuario,String paswd) throws ValidaException {
List<Usuarios> salida = new ArrayList<Usuarios>();
Connection con = new Connection();
PreparedStatement ps = null;
ResultSet rs = null;
int indice=1;
String qry=" Select * from Usuarios u where u.cuenta= ? AND u.clave = ? and activa=1 order by u.cveUsuario ";
try {
con.open();
ps = con.prepareStatement(qry);
ps.setString(indice++,"edoQro");
ps.setString(indice++,"1");
rs=ps.executeQuery();
while (rs.next()) {
Usuarios an = new Usuarios();

an.setNivel(rs.getInt("Nivel"));
an.setCuenta(rs.getString("Cuenta"));
an.setClave(rs.getString("Clave"));
an.setNombre(rs.getString("Nombre"));
an.setIdServidor(rs.getInt("idServidor"));
an.setCveUsuario(rs.getInt("CveUsuario"));
an.setFua(rs.getDate("FUA"));
an.setEmail(rs.getString("EMAIL"));
an.setMenus(new ArrayList<Menu>());
List<MenuUsuario> menus = (MenuUsuarioDAO.getInstance().obtenerMenuUsuario(a n.getCveUsuario()));
for (Iterator iter = menus.iterator(); iter.hasNext();) {
MenuUsuario element = (MenuUsuario) iter.next();
an.getMenus().add(MenuDAO.getInstance().get(elemen t.getIdMenu()));
}

salida.add(an);
}
rs.close();
rs=null;
con.close();
con=null;
ps.close();
ps=null;

if (salida != null && salida.size() > 0)
return salida.get(0);
else
return null;

} catch (Exception e) {
e.printStackTrace();
throw new ValidaException(ValidaException.DATOS, "error.generico.consulta" + e.getMessage());
}
finally{

}

}

el query esta perfectamente bien, pues si le pongo los parámetros fijos en el string si trae los datos, pero tratandolos con ? no devuelve datos, y en efecto no entra dentro del while devolviendo un objeto null, la variable an esta declarada dentro del while por que por cada registro que traiga el query se crea un objeto de tipo Usuarios y con el salida.add(an) se agrega el objeto a la lista Salida de tipo usuarios ( List<Usuarios> salida = new ArrayList<Usuarios>(); ). Los DAO son simples clases con stters y getters asi las normbraron en la organización.

Bueno creo que el detalle esta en el preparedstatement al momento de armarlo con los setString, el problema es que lo he analizado y comparado con otros ejemplos y esta correcto, sin embargo no entiendo el por que no trae datos. Agradezco su ayuda. Alguna idea.