Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Benutzerkennwort über jdbc ändern. Probleme mit Pässen mit Fragezeichen

Um JDBC zum Ändern des Passworts eines Oracle-Benutzers zu verwenden, müssen Sie zwei Dinge tun:

  • Füge das Passwort direkt in die SQL-Zeichenfolge ein (Bind-Parameter können nicht verwendet werden),
  • Escape-Verarbeitung deaktivieren.

Sie können keine Bind-Variablen verwenden, da der Benutzername und das Passwort nicht als Zeichenfolgen in einfachen Anführungszeichen an die Datenbank gesendet werden.

Der ? in der SQL-Zeichenfolge wird als Platzhalter für eine Bind-Variable verwendet, und aus diesem Grund wird die SQL-Zeichenfolge irgendwann von Oracle JDBC verstümmelt. Das Deaktivieren der Escape-Verarbeitung für die Anweisung verhindert, dass dies geschieht. Versuchen Sie:

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

Wenn Sie das Passwort programmgesteuert festlegen, sollte Ihr Code auch sicherstellen, dass das neue und das alte Passwort keinen " enthalten Zeichen, um SQL-Injection zu vermeiden.