Per utilizzare JDBC per modificare la password di un utente Oracle devi fare due cose:
- inserisci la password direttamente nella stringa SQL (non è possibile utilizzare i parametri di binding),
- disabilita l'elaborazione di escape.
Non puoi utilizzare le variabili di collegamento perché il nome utente e la password non vengono inviati al database come stringhe tra virgolette singole.
Il ?
nella stringa SQL viene preso come segnaposto della variabile di collegamento e per questo motivo la stringa SQL viene alterata a un certo punto da Oracle JDBC. La disabilitazione dell'elaborazione di escape sull'istruzione impedisce che ciò accada. Prova:
Statement s = conn.createStatement();
s.setEscapeProcessing(false);
s.executeUpdate("ALTER user Stephen identified by \"newPassword?\" replace \"oldPassword\"");
Se stai impostando la password a livello di codice, il tuo codice dovrebbe anche garantire che la nuova e la vecchia password non contengano alcun "
caratteri, per evitare SQL injection.