Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Altere a senha do usuário via jdbc. Problemas com passes contendo pontos de interrogação


Para usar o JDBC para alterar a senha de um usuário Oracle, você precisa fazer duas coisas:
  • coloque a senha diretamente na string SQL (parâmetros de ligação não podem ser usados),
  • desative o processamento de escape.

Você não pode usar variáveis ​​de ligação porque o nome de usuário e a senha não são enviados ao banco de dados como strings entre aspas simples.

O ? na string SQL está sendo tomada como um marcador de posição da variável de ligação e, por causa disso, a string SQL está sendo desfigurada em algum momento pelo Oracle JDBC. Desabilitar o processamento de escape na instrução impede que isso aconteça. Tentar:
Statement s = conn.createStatement();
s.setEscapeProcessing(false);
s.executeUpdate("ALTER user Stephen identified by \"newPassword?\" replace \"oldPassword\"");

Se você estiver definindo a senha programaticamente, seu código também deve garantir que as senhas novas e antigas não contenham nenhum " caracteres, para evitar injeção de SQL.