Oracle
 sql >> Database >  >> RDS >> Oracle

Modificare la password utente tramite jdbc. Problemi con passaggi contenenti punti interrogativi

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.