sql >> Databasteknik >  >> RDS >> Oracle

Ändra användarlösenord via jdbc. Problem med pass som innehåller frågetecken

För att använda JDBC för att ändra lösenordet för en Oracle-användare måste du göra två saker:

  • lägg lösenordet direkt i SQL-strängen (bindningsparametrar kan inte användas),
  • inaktivera escape-bearbetning.

Du kan inte använda bindningsvariabler eftersom användarnamnet och lösenordet inte skickas till databasen som strängar med citattecken.

? i SQL-strängen tas som en bindningsvariabel platshållare, och på grund av detta blir SQL-strängen manglad någon gång av Oracle JDBC. Om du inaktiverar escape-bearbetning på uttalandet stoppas detta från att hända. Försök:

Statement s = conn.createStatement();
s.setEscapeProcessing(false);
s.executeUpdate("ALTER user Stephen identified by \"newPassword?\" replace \"oldPassword\"");

Om du ställer in lösenordet programmatiskt bör din kod också säkerställa att de nya och gamla lösenorden inte innehåller någon " tecken, för att undvika SQL-injektion.



  1. MySQL behandlar ÅÄÖ som AAO?

  2. mysql-databastillverkning rullgardinsmeny med data som redan skrivits in i html/php

  3. Alla som använder SQL Source Control från Red Gate

  4. Uppdatera uttalande i MySQL med C#