IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

[Oracle][Spring] Problème de curseurs


Sujet :

JDBC Java

  1. #1
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut [Oracle][Spring] Problème de curseurs
    Bonjour,

    Mon application peut se connecter (entre autres) à une base Oracle.
    Toute requête est gérée par Spring, je passe en effet par la classe JdbcTemplate.
    Or, il y a quelque chose que je ne comprend pas : Au démarrage de mon application, je récupère l'erreur suivante :
    java.sql.SQLException: ORA-00604: une erreur s'est produite au niveau SQL récursif 1
    ORA-01000: nombre maximum de curseurs ouverts dépassé
    Cela arrive à la première requête exécutée !! Je suis le seul à me connecter à ma base, personne d'autre que mon programme ne l'utilise donc.

    J'ai beau chercher, je ne vois pas d'où peut venir l'erreur.
    Auriez-vous des pistes de recherches ?

    Pour information, j'utilise Oracle XE et Java 1.4

    Merci !

    Edit: Sur ma base, j'ai 300 en open_cursors
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

  2. #2
    Rédacteur
    Avatar de romaintaz
    Homme Profil pro
    Java craftsman
    Inscrit en
    Juillet 2005
    Messages
    3 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Java craftsman
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2005
    Messages : 3 790
    Points : 7 275
    Points
    7 275
    Par défaut
    Rebonjour,

    Bon, désolé, c'était mon code qui était en cause.
    En gros, à l'initialisation, je trifouillais les métadonnées de ma BD pour obtenir, pour chaque table, leur clés primaires.
    Je faisais ça :

    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
     
            Connection conn = null;
            ResultSet pks = null;
            ResultSet tables = null;
            try {
                conn = this.dataSource.getConnection();
                DatabaseMetaData meta = conn.getMetaData();
                // Ici, je choppe toutes mes tables.
                tables = meta.getTables(conn.getCatalog(), null, "%", new String[] {"TABLE"});
                while (tables.next()) {
                    String table = (String) tables.getString("TABLE_NAME");
                    // Ici je chope, pour la table en cours, toutes les clés primaires.
                    pks = meta.getPrimaryKeys(conn.getCatalog(), null, table);
                    String pk = (String) primaryKeys.get(table);
                    while (pks.next()) {
                        // Ici mon code.
                        ...
                    }
                }
            } catch (Exception e) {
            } finally {
                // Ici je release les ResultSets tables et pks, ainsi que la connection.
            }
    Or ce code contient une erreur. Saurez-vous la retrouver ?
    Bah en fait, à chaque itération sur tables, je ne fermais pas mon ResultSet de pks, qui n'était en fait clôturé qu'à la dernière itération (pks.close() ne se trouvant que dans le finally).
    En ajoutant un pks.close() après ma boucle while (pks.next()) { ... }, ça passe bien mieux

    Voilà donc mon problème est résolu !
    Nous sommes tous semblables, alors acceptons nos différences !
    --------------------------------------------------------------
    Liens : Blog | Page DVP | Twitter
    Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
    Critiques : Apache Maven

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/01/2011, 11h17
  2. [MSDE] Problème de curseur dans une SP
    Par papouAlain dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/07/2005, 11h28
  3. Réponses: 4
    Dernier message: 07/06/2005, 15h14
  4. JBuilder 2005 et Oracle 9i-> Problème JDBC drive
    Par Devil666 dans le forum JBuilder
    Réponses: 1
    Dernier message: 04/04/2005, 14h14
  5. [Trigger] Problème de curseur
    Par Superstivix dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/06/2004, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo