Pb connexion jdbc avec un user ayant un profil qui limite le nombre de connexion

ludolebreizh Messages postés 1 Date d'inscription mercredi 19 décembre 2007 Statut Membre Dernière intervention 19 décembre 2008 - 19 déc. 2008 à 15:12
hatimboss Messages postés 9 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 5 juin 2012 - 5 avril 2012 à 14:19
Bonjour,

Mon problème est le suivant :

J'utilise le jdbc fournit par oracle(8.i) pour la version java 1.4_02 pour faire une connexion à une base oracle.


La connexion se fait par un utilisateur qui a un profil qui limite le nombre d'échec à 3.

Après avoir fait 2 connexions en échec en utilisant jdbc, le compte de l'utilisateur est bloqué.

Avez-vous déjà rencontré ce genre de problème, svp?

Le code utilisé :

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.PropertyResourceBundle;
 
publicclass testConnexion {
 
/**
* @param args
* @throws ClassNotFoundException
* @throws IllegalAccessException
* @throws InstantiationException
* @throws SQLException
* @throws SQLException
* @throws ClassNotFoundException
* @throws IllegalAccessException
* @throws InstantiationException
*/
publicstaticvoid main(String[] args)throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException {
// TODO Auto-generated method stub
DriverManager.registerDriver((Driver)Class.forName("oracle.jdbc.driver.OracleDriver").newInstance());
try{
methode1();
}catch(Exception e){
// TODO Auto-generated catch block
e.printStackTrace();
}

try{
methode2();
}catch(Exception e){
// TODO Auto-generated catch block
e.printStackTrace();
}

try{
methode2();
}catch(Exception e){
// TODO Auto-generated catch block
e.printStackTrace();
}

try{
methode1();
}catch(Exception e){
// TODO Auto-generated catch block
e.printStackTrace();
DriverManager.deregisterDriver((Driver)Class.forName("oracle.jdbc.driver.OracleDriver").newInstance());
}
 
}
 

publicstaticvoid methode1()throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException {
 
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracle-nombase:portbase:instance", "login", "pwd");
String strSQL = "SELECT distinct(code) FROM op.devise ";

try{
// - Obtention d'un Statement
java.sql.PreparedStatement pstmt = con.prepareStatement(strSQL);
ResultSet rs = pstmt.executeQuery();

while( rs.next()){
System.out.println("code : " + rs.getString(1));
}
}catch(Exception e){
// TODO Auto-generated catch block
e.printStackTrace();
 
}
finally{
if(con!=null){
con.close();
}
}
}
 
publicstaticvoid methode2()throws SQLException, InstantiationException, IllegalAccessException, ClassNotFoundException {
 
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@oracle-nombase:portbase:instance", "login", "MauvaisPwd");
String strSQL = "SELECT distinct(code) FROM op.devise ";

try{
// - Obtention d'un Statement
java.sql.PreparedStatement pstmt = con.prepareStatement(strSQL);
ResultSet rs = pstmt.executeQuery();

while( rs.next()){
System.out.println("code : " + rs.getString(1));
}
}catch(Exception e){
// TODO Auto-generated catch block
e.printStackTrace();
 
}
finally{
if(con!=null){
con.close();
}
}
 
}
 
}

La trace représente l'exécution du code ci-dessus :


code : USD

code : XEU

code : ZAR


java.sql.SQLException: ORA-01017: invalid username/password; logon denied


at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:170)

at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:218)

at oracle.jdbc.ttc7.O3log.receive2nd(O3log.java:517)

at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:266)

at oracle.jdbc.driver.OracleConnection.(OracleConnection.java:269)

at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:375)

at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:266)

at java.sql.DriverManager.getConnection(DriverManager.java:512)

at java.sql.DriverManager.getConnection(DriverManager.java:171)

at testConnexion.methode2(testConnexion.java:88)

at testConnexion.main(testConnexion.java:36)

java.sql.SQLException: ORA-01017: invalid username/password; logon denied


at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:170)

at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:218)

at oracle.jdbc.ttc7.O3log.receive2nd(O3log.java:517)

at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:266)

at oracle.jdbc.driver.OracleConnection.(OracleConnection.java:269)

at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:375)

at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:266)

at java.sql.DriverManager.getConnection(DriverManager.java:512)

at java.sql.DriverManager.getConnection(DriverManager.java:171)

at testConnexion.methode2(testConnexion.java:88)

at testConnexion.main(testConnexion.java:43)

java.sql.SQLException: ORA-28000: the account is locked


at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:170)

at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:218)

at oracle.jdbc.ttc7.O3log.receive2nd(O3log.java:517)

at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:266)

at oracle.jdbc.driver.OracleConnection.(OracleConnection.java:269)

at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:375)

at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:266)

at java.sql.DriverManager.getConnection(DriverManager.java:512)

at java.sql.DriverManager.getConnection(DriverManager.java:171)

at testConnexion.methode1(testConnexion.java:62)

at testConnexion.main(testConnexion.java:50)


Constatation :

Le programme fait 4 tentatives de connexion :


La première tentative de connexion se déroule bien, des données sont affichées.


La deuxième :

invalid username/password;

(Normal, mot de passe incoorect)


La troisième :

invalid username/password;

(Normal, mot de passe incoorect)


La quatrième :

the account is locked

(problème, le compte est déjà fermé alors que l'on a fait que 2
tentatives avec échecs. Cette quatrième tentative utilise la même
méthode que la première tentative)

J'ai essayé une connexion via sqlplus, mon compte est fermé au bout de 3 erreurs et non pas 2.

1 réponse

hatimboss Messages postés 9 Date d'inscription mercredi 22 juin 2011 Statut Membre Dernière intervention 5 juin 2012
5 avril 2012 à 14:19
Salam
Merci Bcp pour le code
je veux juste savoir qu'elle biblio je doit ajouter à mon projet (sous netbeans) pour se connecter avec oracle
0
Rejoignez-nous