Bonjour,
voici le topo:
j'exécute une requete select dans une base Firebird qui doit me retourner les identifiants d'une personne unique en fonction d'un indice (select * from employes where ss=indice... en gros). Ma méthode doit retourner un objet de type employe contenant ses identifiants si elle existe, et un pointeur null si la personne n'est pas dans la base.

Mon problème est le suivant: Si la personne n'est pas trouvée lors de l' ExecuteQuery avec le Select, je vais direct en SQLException. Or la requete n'est pas fausse, simplement elle ne retourne pas de resultat car il n'y a pas d'entrée dans la base ayant id=indice.

Je souhaiterais différencier une "vraie" SQLException d'une SQLException dûe à un SELECT ne retournant pas de résultat.

Voici le code:
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
 
Employe employe =null;
try {
   connect = DriverManager.getConnection(jdbcUrl, username, passwd);
   statement = connect.createStatement();
   rs=statement.executeQuery(String.format("SELECT SS, NOM, PRENOM,   ADRESSE, VILLE, CODEPOSTAL, INDICE FROM EMPLOYES WHERE SS=%s",num));
 
// On obtient un résultat unique
   rs.next()
   employe = new Employe(rs.getString(1),rs.getString(2),rs.getString(3),rs.getString(4),rs.getString(5),rs.getString(6),rs.getInt(7));
 
} catch (SQLException ex1) {
   excep = new DaoException("Erreur d'accès aux données", ex1);
}finally{
   return employe
}
Avec ce code, je catch une SQLException dans les 2 cas. Or je ne veux pas retourner d'erreur quand le SELECT ne retourne rien, mais seulement si qqch s'est mal déroulé.

Merci