Bonjour à tous,
Voilà, j'ai une classe qui me sert à faire des requêtes dans différentes bases de données afin de tester leur bon fonctionnement. Toutes les requêtes et les paramètres de connexion de chaque base sont stockés dans un fichier xml
le problème est que si je ferme la connexion après chaque requête, j'ai une erreur de type javaNullPointerException :
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 public class CheckDataBase { public static ResultParameters checkData(DbParameters db) throws SQLException{ Connection connection = null; Statement statement = null; ResultSet resultSet = null; ResultParameters result = null; Exception reponseData = null; boolean ok = true; try { Class.forName(db.getDriver()); connection = DriverManager.getConnection((db.getAdresse()+ db.getHostname()+ db.getDbname()),db.getUser(),db.getLogin()); statement = connection.createStatement(); resultSet = statement.executeQuery(db.getRequetesql()); while(resultSet.next()) { String nom = resultSet.getString(db.getNomcolonne()); } } catch (ClassNotFoundException e) { ok = false; reponseData = e; //System.out.println("Base " + db.getDbname() + " : Driver JDBC non trouvé : " + e); } catch (SQLException e) { ok = false; reponseData = e; } finally{ if(ok){ //ajout un test bon result = new ResultParameters(db.getDbname(),reponseData.toString(),"OK"); } else{ //ajout un test faux result = new ResultParameters(db.getDbname(),reponseData.toString(),"KO"); } //connection.close(); return result; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 [06/11/06 11:25:20:780 CET] 5ef90107 SystemErr R java.lang.NullPointerException [06/11/06 11:25:20:780 CET] 5ef90107 SystemErr R at sentinelle.outils.CheckDataBase.checkData(CheckDataBase.java:57) [06/11/06 11:25:20:780 CET] 5ef90107 SystemErr R at sentinelle.appli.MainSentinelle$RepetSentinelle.run(MainSentinelle.java:154) [06/11/06 11:25:20:780 CET] 5ef90107 SystemErr R at java.util.TimerThread.mainLoop(Timer.java:446) [06/11/06 11:25:20:780 CET] 5ef90107 SystemErr R at java.util.TimerThread.run(Timer.java:396)
la methode de cette classe permettant de faire les requêtes est appelée dans
une autre classe qui utilise les classes timer et timertask avec la méthode run. D'autre part à chaque fois qu'une connexion à une base échoue, j'utilise un timer et la méthode sleep pour arrêter les requêtes sur la base correspondante
merci de votre aide!
Partager