Chcete-li použít JDBC ke změně hesla uživatele Oracle, musíte udělat dvě věci:
- zadejte heslo přímo do řetězce SQL (nelze použít parametry vazby),
- zakázat zpracování escape.
Nemůžete použít proměnné vazby, protože uživatelské jméno a heslo se do databáze neodesílají jako řetězce v jednoduchých uvozovkách.
?
v řetězci SQL je brán jako zástupný symbol pro proměnnou vazby a kvůli tomu je řetězec SQL v určitém okamžiku narušen Oracle JDBC. Zakázání zpracování escape v příkazu zabrání tomu, aby se to stalo. Zkuste:
Statement s = conn.createStatement();
s.setEscapeProcessing(false);
s.executeUpdate("ALTER user Stephen identified by \"newPassword?\" replace \"oldPassword\"");
Pokud heslo nastavujete programově, váš kód by měl také zajistit, aby nové a staré heslo neobsahovalo žádné "
znaků, abyste se vyhnuli vkládání SQL.