Để sử dụng JDBC để thay đổi mật khẩu của người dùng Oracle, bạn cần thực hiện hai việc:
- đặt mật khẩu trực tiếp trong chuỗi SQL (không thể sử dụng các tham số liên kết),
- tắt xử lý thoát.
Bạn không thể sử dụng các biến liên kết vì tên người dùng và mật khẩu không được gửi đến cơ sở dữ liệu dưới dạng các chuỗi được trích dẫn đơn.
?
trong chuỗi SQL đang được coi là một trình giữ chỗ biến liên kết và vì điều này, chuỗi SQL đang bị Oracle JDBC xử lý tại một số điểm. Việc tắt xử lý thoát trên câu lệnh sẽ ngăn điều này xảy ra. Hãy thử:
Statement s = conn.createStatement();
s.setEscapeProcessing(false);
s.executeUpdate("ALTER user Stephen identified by \"newPassword?\" replace \"oldPassword\"");
Nếu bạn đang đặt mật khẩu theo chương trình, mã của bạn cũng phải đảm bảo rằng mật khẩu mới và cũ không chứa bất kỳ "
nào để tránh đưa vào SQL.