sql >> Base de Datos >  >> RDS >> Oracle

Modificar la contraseña de usuario a través de jdbc. Problemas con los pases que contienen signos de interrogación

Para usar JDBC para cambiar la contraseña de un usuario de Oracle, debe hacer dos cosas:

  • coloque la contraseña directamente en la cadena SQL (no se pueden usar parámetros de vinculación),
  • deshabilitar el procesamiento de escape.

No puede usar variables de vinculación porque el nombre de usuario y la contraseña no se envían a la base de datos como cadenas entre comillas simples.

El ? en la cadena SQL se toma como un marcador de posición de variable de vinculación, y debido a esto, la cadena SQL está siendo alterada en algún momento por Oracle JDBC. Deshabilitar el procesamiento de escape en la declaración evita que esto suceda. Prueba:

Statement s = conn.createStatement();
s.setEscapeProcessing(false);
s.executeUpdate("ALTER user Stephen identified by \"newPassword?\" replace \"oldPassword\"");

Si está configurando la contraseña mediante programación, su código también debe garantizar que las contraseñas nueva y anterior no contengan ningún " caracteres, para evitar la inyección de SQL.