Hola gente como estan
 
Vengo usando el ResultSet para verificar un login, algo así:    
Código Java:
Ver original 
 
        try {
            resultado = consulta.executeQuery(sql);
 
            System.
out.
println("Mensaje:" + xp.
getMessage());             
        }
 
        return resultado;
 
    }
  
Este código no tiene todo los de ingresar user y pass, eso es aparte, lo muestro para que vean como hago las consultas a la base de datos. 
Y me ha funcionado bien, pero me he dado cuenta de que puedo sufrir de una Inyección Sql. 
Entonces investigando me dicen que lo puedo hacer con PrepareStatement. 
¿Cuales son las diferencias entre ambos? 
Gracias