necromancer669 Posted December 13, 2010 Report Share Posted December 13, 2010 He tratado toda la tarde y no he podido lograr lo que quiero. Sé que estoy fallando en el método. Lo que deseo hacer, es que cuando me entreguen el nombre_usuario y password, entren a la bd con un método (nose si lo estaré haciendo bien) y me retornen datos que pertenecen a aquella 'id' y poder recoger estos datos para poder crear filas en otras tablas. Este es el código: Método: public static List<usuario> loginAnuncio(String nombre_usuario,String password) { List<usuario> usuarios = new ArrayList(); try { config cn= new config(); ResultSet rs; Connection connection = cn.conectar(); //Select the data from the database String sql = "select * from usuarios where nombre_usuario='"+nombre_usuario+"' and password='"+password+"'"; Statement s = connection.createStatement(); s.executeQuery (sql); rs = s.getResultSet(); usuario e = new usuario(); e.setNombre(rs.getString("nombre")); e.setRegion(rs.getString("region")); e.setCiudad(rs.getString("ciudad")); e.setFono(rs.getString("fono")); usuarios.add(e); rs.close (); s.close (); }catch(Exception e){ System.out.println("Exception is;"+e); } return usuarios; } Código donde llegan y se procesan resultado. String nombre_usuario= request.getParameter("nombre_usuario"); String password= request.getParameter("password"); metodosAuto.loginAnuncio(nombre_usuario,password); usuario u=new usuario(); response.setContentType("text/html"); request.setAttribute("usuarios",u); //Disptching request RequestDispatcher dispatcher = request.getRequestDispatcher(page); if (dispatcher != null){ dispatcher.forward(request, response); } String nombre=u.getNombre(); String region=u.getRegion(); String ciudad=u.getCiudad(); String fono=u.getFono(); String marca= request.getParameter("marca"); String modelo= request.getParameter("modelo"); String version= request.getParameter("version"); String ano= request.getParameter("ano"); String kilometraje= request.getParameter("kilometraje"); String cilindrada= request.getParameter("cilindrada"); String combustible= request.getParameter("combustible"); String transmision= request.getParameter("transmision"); String precio= request.getParameter("precio"); /* String foto1= request.getParameter("foto1"); String foto2= request.getParameter("foto2"); String foto3= request.getParameter("foto3"); String foto4= request.getParameter("foto4"); String foto5= request.getParameter("foto5"); String foto6= request.getParameter("foto6"); */ String comentarios= request.getParameter("comentarios"); String estado= request.getParameter("estado"); auto a= new auto(); a.setNombre_usuario(nombre_usuario); a.setNombre(nombre); a.setRegion(region); a.setCiudad(ciudad); a.setFono(fono); a.setAnoAuto(ano); a.setCilindrada(cilindrada); a.setCombustible(combustible); a.setComentarios(comentarios); a.setEstado(estado); /* a.setFoto1(foto1); a.setFoto2(foto2); a.setFoto3(foto3); a.setFoto5(foto5); a.setFoto4(foto4); a.setFoto6(foto6); */ a.setKilometraje(kilometraje); a.setMarca(marca); a.setModelo(modelo); a.setPrecio(precio); a.setTransmision(transmision); a.setVersion(version); metodosAuto.guardarAuto(a); Link to comment Share on other sites More sharing options...
rvega77 Posted December 13, 2010 Report Share Posted December 13, 2010 :blink: Estimado... voy a modificar directamente el código que enviaste... Supuestos: Si vamos a autenticar al usuario, se supone que este es unico (para la combinación de user / pass) Esto quiere decir que el método: loginAnuncio(...) puede devolver el objeto usuario o null (tambien podria lanar una excepción, pero este no es el caso... // Cambio del tipo de reotorno: solo a usuario public static usuario loginAnuncio(String nombre_usuario,String password) { usuario usrEncontrado = null; try { config cn= new config(); ResultSet rs; Connection connection = cn.conectar(); //OPCIONAL: voy a cambiar la sentencia por sentencia preparada... // este tipo de sentencia permite evitar la inyecion de sql (seguridad) String sql = "select * from usuarios where nombre_usuario = ? and password = ?"; // los signos de interrogacion son los puntos en que colocaremos los valores.... PreparedStatement s = connection.prepareStatement( sql ); s.setString(1, nombre_usuario); // primer ? en la quiery s.setString(2, password); // segundo ? en la quiery // ejecutamos la query, notese que no se envia el sql como parametro rs = s.executeQuery (); // vemos si tiene datos if ( rs.next() ) { usrEncontrado = new usuario(); usrEncontrado.setNombre(rs.getString("nombre")); usrEncontrado.setRegion(rs.getString("region")); usrEncontrado.setCiudad(rs.getString("ciudad")); usrEncontrado.setFono(rs.getString("fono")); } rs.close (); s.close (); }catch(Exception e){ System.out.println("Exception is;"+e); } return usrEncontrado; } Para la segunda parte debemos respetar el "contrato" del método SI encuentra el nombre de usuario y password es correcta, retorna el objeto usuario SINO, retorna NULL String nombre_usuario= request.getParameter("nombre_usuario"); String password= request.getParameter("password"); // autenticamos al usuario usuario u metodosAuto.loginAnuncio(nombre_usuario, password); // vemos si lo encontro... if ( u == null ){ // PANICO: No lo encontro.... debes detener la ejecucion del metodo... } else { // OK, el usuario es correcto.... debes mantener el resto del codigo que enviaste // ... } Espero haber ayudado... Saludos :magic: Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now