За да използвате JDBC за промяна на паролата на потребител на Oracle, трябва да направите две неща:
- поставете паролата директно в SQL низа (не могат да се използват параметри за свързване),
- дезактивиране на обработката на escape.
Не можете да използвате променливи за свързване, защото потребителското име и паролата не се изпращат към базата данни като низове в единични кавички.
?
в SQL низа се приема като заместител на променлива за свързване и поради това SQL низът се обезобразява в даден момент от Oracle JDBC. Деактивирането на обработката на escape на оператора спира това да се случи. Опитайте:
Statement s = conn.createStatement();
s.setEscapeProcessing(false);
s.executeUpdate("ALTER user Stephen identified by \"newPassword?\" replace \"oldPassword\"");
Ако задавате паролата програмно, вашият код трябва също така да гарантира, че новата и старата парола не съдържат "
знаци, за да избегнете SQL инжектиране.