Aby użyć JDBC do zmiany hasła użytkownika Oracle, musisz zrobić dwie rzeczy:
- umieść hasło bezpośrednio w ciągu SQL (nie można użyć parametrów wiązania),
- wyłącz przetwarzanie ucieczki.
Nie możesz używać zmiennych wiązania, ponieważ nazwa użytkownika i hasło nie są wysyłane do bazy danych jako ciągi w pojedynczym cudzysłowie.
?
w ciągu SQL jest traktowany jako symbol zastępczy zmiennej wiążącej i z tego powodu ciąg SQL jest zniekształcany w pewnym momencie przez Oracle JDBC. Wyłączenie przetwarzania ucieczki w instrukcji zapobiega temu. Wypróbuj:
Statement s = conn.createStatement();
s.setEscapeProcessing(false);
s.executeUpdate("ALTER user Stephen identified by \"newPassword?\" replace \"oldPassword\"");
Jeśli ustawiasz hasło programowo, Twój kod powinien również upewnić się, że nowe i stare hasła nie zawierają żadnego "
znaków, aby uniknąć wstrzyknięcia SQL.