Untuk menggunakan JDBC untuk mengubah kata sandi pengguna Oracle, Anda perlu melakukan dua hal:
- masukkan kata sandi langsung ke string SQL (parameter bind tidak dapat digunakan),
- nonaktifkan pemrosesan pelarian.
Anda tidak dapat menggunakan variabel bind karena nama pengguna dan sandi tidak dikirim ke database sebagai string bertanda kutip tunggal.
?
dalam string SQL diambil sebagai tempat penampung variabel pengikat, dan karena itu string SQL menjadi rusak di beberapa titik oleh Oracle JDBC. Menonaktifkan pemrosesan pelarian pada pernyataan menghentikan hal ini terjadi. Coba:
Statement s = conn.createStatement();
s.setEscapeProcessing(false);
s.executeUpdate("ALTER user Stephen identified by \"newPassword?\" replace \"oldPassword\"");
Jika Anda menyetel sandi secara terprogram, kode Anda juga harus memastikan bahwa sandi baru dan lama tidak mengandung "
karakter, untuk menghindari injeksi SQL.