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
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 ;)
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
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
He usado el metodo que me deciis, y me da unr esultado raro :S
He usado este codigo: (Declaraciones previas)
System.out.println("Conexión a base de datos "+url+" ... Ok");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select id, nombre from contacto where id='1' and nombre='Debci'");
System.out.println("El resultado es " + rs);
conn.close();
Y me devuelve por println a la consola :
Conexión a base de datos jdbc:mysql://localhost/mysql ... Ok
El resultado es com.mysql.jdbc.ResultSet@18a6e6e
Que significa ResultSet@18a6e6e??
saludos
while(rs.read())//si no es read prueba con next
{
System.out.println("El resultado es "+ rs.getObject("id"));
}
eso me devuelve 1 xDD
no me arregla nada
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
System.out.println("El resultado es "+ rs.getObject("nombre"));
entonces ahora deberé comprobar el contenido de getObject y si corresponde esque esta correcto?
SALUDOs
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)
Gracias, por la ayuda, se que alomejor me repito peor entonces:
If rs.getObject("nombre") != null {
Aceso denegado
}else{
Acess Granted
}
Gracias por la ayuda :D
Al reves.
If rs.getObject("nombre") != null {
Aceso Granted
}else{
Acess Denegado
}
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)
Seria asi completo lo hare a mi manera :xD
int i =0;
System.out.println("Conexión a base de datos "+url+" ... Ok");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select id, nombre from contacto where id='1' and nombre='Debci'");
while(rs.read())//si deseas que arroje multiples columnas igual se puede con el read
{
i++;
System.out.println("Acceso correcto");
}
if(i=0)
{
System.out.println("No se pudo acceder.."); // no habra sumado la i ya que debe entrar al while primero xD
}
//System.out.println("El resultado es " + rs);
conn.close();
la i simboliza el correcto o incorrecto ¿cierto?
saludos
Cita de: Debci en 2 Agosto 2009, 16:44 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.