sql >> Database >  >> RDS >> Oracle

Gebruikerswachtwoord wijzigen via jdbc. Problemen met passen met vraagtekens

Om JDBC te gebruiken om het wachtwoord van een Oracle-gebruiker te wijzigen, moet u twee dingen doen:

  • zet het wachtwoord rechtstreeks in de SQL-string (bindparameters kunnen niet worden gebruikt),
  • escape-verwerking uitschakelen.

U kunt geen bindvariabelen gebruiken omdat de gebruikersnaam en het wachtwoord niet als tekenreeksen tussen enkele aanhalingstekens naar de database worden verzonden.

De ? in de SQL-string wordt genomen als een tijdelijke aanduiding voor een bindvariabele, en hierdoor wordt de SQL-string op een gegeven moment verminkt door Oracle JDBC. Als u de escape-verwerking voor de instructie uitschakelt, gebeurt dit niet. Probeer:

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

Als u het wachtwoord programmatisch instelt, moet uw code er ook voor zorgen dat de nieuwe en oude wachtwoorden geen " bevatten tekens, om SQL-injectie te voorkomen.



  1. Automatisch failover beheren van de MySQL-database voor Moodle

  2. Problemen oplossen Geen dergelijk bestand of map bij het uitvoeren van `php app/console doctrine:schema:create`

  3. Strings splitsen:een vervolg

  4. MySQL-gecodeerde kolommen