Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Debci en 31 Julio 2009, 15:55 pm



Título: Loggin en MYSQL
Publicado por: Debci en 31 Julio 2009, 15:55 pm
He conseguido conectar java con mysql ahora quiero que me haga un loggin como una web comprobando el usuario y la pass de de un db especifica, pero no se como saber si ejecutando la querye ah encontrado o no el usser y la pass, es decir que no se como detectar si ha introducido los datos correctpos o incorrectos.

por ejemplo (algoritmo simplificado):

If usser&pass = true;
pasara a la ottra frame
else;
dar mensaje de error.

Saludos


Título: Re: Loggin en MYSQL
Publicado por: Danther en 31 Julio 2009, 17:42 pm
Personalmente no he usado java para conectar con mysql, pero supongo que estes usando lo que estes usando te debe permitir hacer una query tipica, como:

"SELECT nombre_columna FROM tabla_elegida WHERE nombre_columna = usuario_introducido AND password_columna = password_introducido"

Luego es cuestion de comprobar si la query ha retornado alguna coincidencia, y en caso de haberla permitir el paso

Si estas usando JDBC mirate la API, porque trae metodos para hacer todo lo que te he dicho ;)


Título: Re: Loggin en MYSQL
Publicado por: Debci en 31 Julio 2009, 22:11 pm
Amigo si lo pregunto es porque ya he consultado... el api es muy grande y no he encontrado alomejor es cuestion de  buscar mas...

saludos


Título: Re: Loggin en MYSQL
Publicado por: Pablo Videla en 31 Julio 2009, 22:43 pm
http://foro.elhacker.net/java/clase_para_conectar_a_una_base_de_datos_e_interactuar_con_ella_jdbc_mysql-t262661.0.html

ve ese post que hice yo y busca el metodo ResultSet eso te servira para lo que quieres


Título: Re: Loggin en MYSQL
Publicado por: Debci en 1 Agosto 2009, 12:12 pm
He usado el metodo que me deciis, y me da unr esultado raro :S

He usado este codigo: (Declaraciones previas)
Código
  1. System.out.println("Conexión a base de datos "+url+" ... Ok");
  2. Statement st = conn.createStatement();
  3. ResultSet rs = st.executeQuery("select id, nombre from contacto where id='1' and nombre='Debci'");
  4. System.out.println("El resultado es " + rs);
  5. conn.close();
  6.  

Y me devuelve por println a la consola :

Código:
Conexión a base de datos jdbc:mysql://localhost/mysql ... Ok
El resultado es com.mysql.jdbc.ResultSet@18a6e6e
Que significa ResultSet@18a6e6e??

saludos


Título: Re: Loggin en MYSQL
Publicado por: Pablo Videla en 1 Agosto 2009, 17:06 pm
Código
  1. while(rs.read())//si no es read prueba con next
  2. {
  3. System.out.println("El resultado es "+ rs.getObject("id"));
  4. }
  5.  


Título: Re: Loggin en MYSQL
Publicado por: Debci en 1 Agosto 2009, 18:19 pm
eso me devuelve 1 xDD
no me arregla nada


Título: Re: Loggin en MYSQL
Publicado por: Pablo Videla en 1 Agosto 2009, 20:26 pm
cambia el id por el nombre de la columna que quieres que te retorne xD , te retorno el ID por eso te retorno 1  :xD :xD :xD
Código
  1. System.out.println("El resultado es "+ rs.getObject("nombre"));


Título: Re: Loggin en MYSQL
Publicado por: Debci en 1 Agosto 2009, 21:08 pm
entonces ahora deberé comprobar el contenido de getObject y si corresponde esque esta correcto?

SALUDOs


Título: Re: Loggin en MYSQL
Publicado por: Danther en 1 Agosto 2009, 21:42 pm
Si no existe valor es que no existe un Debci con id 1
Si ha retornado "algo" no hace falta que lo compruebes porque ese "algo" a la fuerza tiene que ser lo que has pedido en el query.

Asi que bastaria con rs.getObject("nombre") != null o algo asi
Parece una tonteria, pero asi es mas facil para hacer consultas interactivas (por ejemplo que lo que quieras consultar se lo pases por parametro)


Título: Re: Loggin en MYSQL
Publicado por: Debci en 1 Agosto 2009, 21:50 pm
Gracias, por la ayuda, se que alomejor me repito peor entonces:
Código
  1. If rs.getObject("nombre") != null {
  2. Aceso denegado
  3. }else{
  4. Acess Granted
  5. }
  6.  
  7.  

Gracias por la ayuda  :D


Título: Re: Loggin en MYSQL
Publicado por: Danther en 1 Agosto 2009, 22:13 pm
Al reves.

Código
  1. If rs.getObject("nombre") != null {
  2. Aceso Granted
  3. }else{
  4. Acess Denegado
  5. }
  6.  

Pero ten en mente que esto solo leera el primer elemento de rs (creo xD)
Asi que te servira para cuando quieras comprobar un unico resultado, si no siempre puedes hacer lo que bien te ha puesto BadDevil comentarios atras para obtener el resto de valores (en este caso seria next())

Si eso aqui tienes la api del ResultSet, por si tienes que mirarte mas cosas:
http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSet.html (http://java.sun.com/j2se/1.4.2/docs/api/java/sql/ResultSet.html)


Título: Re: Loggin en MYSQL
Publicado por: Pablo Videla en 1 Agosto 2009, 23:43 pm
Seria asi completo lo hare a mi manera  :xD
Código
  1.  
  2. int i =0;
  3. System.out.println("Conexión a base de datos "+url+" ... Ok");
  4. Statement st = conn.createStatement();
  5. ResultSet rs = st.executeQuery("select id, nombre from contacto where id='1' and nombre='Debci'");
  6. while(rs.read())//si deseas que arroje multiples columnas igual se puede con el read
  7. {
  8.  i++;
  9. System.out.println("Acceso correcto");
  10.  
  11. }
  12.  
  13. if(i=0)
  14. {
  15. System.out.println("No se pudo acceder.."); // no habra sumado la i ya que debe entrar al while primero xD
  16. }
  17. //System.out.println("El resultado es " + rs);
  18. conn.close();
  19.  
  20.  
  21.  
  22.  


Título: Re: Loggin en MYSQL
Publicado por: Debci en 2 Agosto 2009, 16:44 pm
la i simboliza el correcto o incorrecto ¿cierto?

saludos


Título: Re: Loggin en MYSQL
Publicado por: Pablo Videla en 2 Agosto 2009, 19:57 pm
la i simboliza el correcto o incorrecto ¿cierto?

saludos

Exacto mira , i es un entero , que cuando entra en el while se sumara una vez o las cantidades de filas que arroje , si la i=0 significa que no entro en el while y que no sumo nada , por lo tanto significa que la consulta estaba mala , o que simplemente no arrojo ningun resultado.