Bonjour,
Mon problème est le suivant :
J'utilise le jdbc fournit par oracle 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?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109 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; public class testConnexion { /** * @param args * @throws ClassNotFoundException * @throws IllegalAccessException * @throws InstantiationException * @throws SQLException * @throws SQLException * @throws ClassNotFoundException * @throws IllegalAccessException * @throws InstantiationException */ public static void 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()); } } public static void 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(); } } } public static void 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 de la classe attachée :
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.<init>(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.<init>(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.<init>(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)
Partager