Tema: Ejemplo de Inyección de SQL

Usuario login(String uname, String pass) throws SQLException {
Connection conn = null;
try {
//Supongamos que se encripta el password con un MD5
conn = //obtener una conexión a base de datos
PreparedStatement ps = conn.prepareStatement(
"SELECT * FROM usuario WHERE username=? AND password=?");
ps.setString(1, uname);
ps.setString(2, pass);
ResultSet rs = ps.executeQuery(sql);
Usuario u = null;
if (rs.next()) {
//Creamos un usuario a partir de la info en el primer registro
//del ResultSet
}
rs.close();
st.close();
return u;
} finally {
if (conn != null) {
conn.close();
}
}
}

Estuve mirando y me interesa mucho esta informacion, Ezamudio tengo una duda. Cuando utilizas esta sentencia PreparedStatement ps = conn.prepareStatement(
"SELECT * FROM usuario WHERE username=? AND password=?");
me queda la duda de que significaria el username=? y password=?, esos dos parametros seria los nombres de los campos en la BD o es simplemente una sentencia que se debe utilizar con el PreparedStatement.
ResultSet rs = ps.executeQuery(sql);
Y el parametro que le envias al executeQuery es la variable (sql), esta variable debe tener incluidos los dos parametros como lo son username y password, pero donde lo haces?

Muchas Gracias

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

En su lugar

Esto debería ser un comentario en este foro, no un foro nuevo, puesto que es una duda del otro tema.