Por ejemplo, tengo una tabla MySQL con todos los datos de los usuarios.
¿Cómo hacer que después de que el usuario inicie sesión, vea su propio nombre de usuario?
He intentado esto:
con = DriverManager.getConnection(url, user, password); stmt = con.createStatement(); rs = stmt.executeQuery(query); while (rs.next()) { String name = rs.getString(1); System.out.println("username : " + name); }Pero solo muestra todos los nombres de usuario en la tabla MySQL.
Su consulta no filtra las filas de la tabla.
Utilice una cláusula WHERE :
String query = "select username from users where username = ?"; stmt.setString(1, user); rs = stmt.executeQuery(query); if (rs.next()) { String name = rs.getString(1); System.out.println("username : " + name); } else { System.out.println("No user : " + user); } el ? el marcador de posición será reemplazado por el valor de la variable user correctamente citada.
String query = "select username from users";para
String query = "select username from users where username = '"+user+"' ";Para evitar inyecciones de sql, es recomendable utilizar un PreparedStament. Consulte este enlace para obtener más detalles: https://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html