Bonjour,
J'utilise l'objet Connection pour faire des requêtes SQL sur une base de données Oracle.
Je voudrais savoir comment je peux récupérer le status de la connection (SS_NORM, SS_NOREC...) ?
Merci pour votre aide.








Bonjour,
J'utilise l'objet Connection pour faire des requêtes SQL sur une base de données Oracle.
Je voudrais savoir comment je peux récupérer le status de la connection (SS_NORM, SS_NOREC...) ?
Merci pour votre aide.
De base, tu n'as que les choses génériques proposées par l'implémentation standard. Cf la Javadoc pour voir ce qui est dispo.
Sinon, la base sur laquelle tu travailles a peut être un driver spécifique qui te permettrai d'avoir des informations plus spécifique. Mais bon, c'est au détriment de la portabilité.
Au lieu d'un
Connection conn;
tu auras par exemple un
OracleConnection conn;








J'utilise déja le driver oracle (ojdbc14.jar).
Je n'ai rien trouvé sur google pour récupérer le status...
Merci pour votre aide.
Regarde par exemple :
http://docs.oracle.com/cd/E18283_01/...onnection.html








Merci, mais je ne vois rien qui me permettrait de récupérer le status ?
il est écrit que c'est pour les extensions Oracle...
Merci pour votre aide.
c'est quoi le but recherché? Savoir si la connexion fonctionne toujours? Dans ce cas exécute select 1 from dual, et si ça ne déclenche pas d'erreur et que t'as bien un row en réponse, tout va bien![]()








Bonjour,
Le but recherché est de savoir si la requête s'est bien passé (dans ce cas le status est SS_NORM == 0), de savoir si elle ne retourne rien (SS_NORM == -35), ou encore par exemple de savoir si l'enregistrement existe déja (SS_DUPK).
Si la requête s'est bien passé on continue, sinon on affiche un message d'erreur ou l'on fait une requête avec moins de clause par exemple.
Merci pour votre aide.
Normalement, si une requete se passe mal, vous aurez toujours un SQLException. Après, comme indiquez, castez votre connexion en OracleConnection pour avoir du contrôle specifique oracle dessus.








Par exemple pour le status NOREC, la requête se passe bien mais ne retourne aucun résultat.
Comme dis précédemment, je n'ai rien trouvé dans la classe OracleConnection permettant de récupérer le status (sauf si c'est dans une sous classe)...
Le fait qu'une requête ne renvoie pas de résultat n'a rien à voir avec le statut de la connexion, c'est l'analyse du ResultSet qui permet de savoir s'il y a des données ou non...
Globalement, on met toutes les opérations dans un try catch finally et on nettoie dans finally.
Si la connexion est morte, tu passeras par le catch, sinon, c'est le traitement dans le corps qui déterminera les éventuels problèmes...
si la requete n'a pas de résultat, ben vote resultSet est vide. Si il s'agissait d'un update, la méthode Statement.executeUpdate() retourne le nombre de Rows affectés.
JE dois avouer que personellement j'ai toujours trouvé toutes les infos dont j'avais besoin pour faire mon code dans les apis standard. Mais bon, vous avez peut-être des besoin très spécifiques. Vos codes de résultat, ils sortent d'où?








On peut trouver les codes de résultat sur le site d'oracle :
voici par exemple pour le -35 ou 1035 :
http://answers.vt.edu/kb/entry/1722
Oui mais votre clés SS_NORM, SS_DUPK etc il sortent d'ou? J'ai l'impression que vous avez un code dans un autre language et que vous essayez de l'adapter tel quel. En java, on travaille avec la couche JDBC qui fournis des informations de haut niveau (réussite ou non, nombre de row modifiés) et les codes d'erreur sont toujours présent dans les Exception levées quand il y en a.








C'est pas grave si je ne récupère pas SS_NORM, je connais les valeurs (SS_NORM == 0, SS_NORC == -35...).
Je souhaite juste récupérer le status. Dans le langage que je connais je faisait cela par exemple :
Les instruction commit et rollback, j'ai bien trouvé en java mais status non.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 if (session.status == StatusCode.SS_NORM) { session.commitTransaction(); } else { session.rollbackTransaction(); }
en java tu fera ce code comme ça
ou si tes règles sont plus complexes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 try { // une ou plusieurs opération SQL connexion.commit(); } catch (SQLException e){ connexion.rollback(); } finally { connexion.close(); }
Tu n'a pas besoin de chipotter les status, le driver le fait pour toi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 boolean doCommit=false; try { // une ou plusieurs opération SQL doCommit=true; //super on a tout réussi } catch (SQLException e){ log.error("Houla ca marche pas",e); } finally { if (doCommit) connexion.commit(); else connexion.rollback(); connexion.close(); }
Partager