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

Java Discussion :

[HSQLDB] Problème sur l'utilisation


Sujet :

Java

  1. #1
    Membre à l'essai
    Profil pro
    ABCD
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : ABCD

    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Points : 21
    Points
    21
    Par défaut
    Bonjour,

    J'ai une petite question et je sèche un peu.
    J'espère que vous pourrez m'aider.

    Je dois tester un programme qui doit utiliser la librairie HSQLDB pour créer une DB en mémoire RAM.
    Donc, je me suis inspiré d'un tutoriel qui se trouvait sur développez.com et de la documentation qui se trouve sur le site http://hsqldb.org/

    Le souci que j'ai lorsque je veux créer une table est que je reçois ce type d'exception :
    05-sept.-2011 11:06:29 be.comp.pvuxp.App executeQuery
    GRAVE: null
    java.sql.SQLException: Access is denied: Session is closed
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
    at org.hsqldb.jdbc.jdbcStatement.fetchResult(Unknown Source)
    at org.hsqldb.jdbc.jdbcStatement.executeUpdate(Unknown Source)
    at be.comp.pvuxp.App.executeQuery(App.java:122)
    at be.comp.pvuxp.App.main(App.java:72)
    Voici le code de la classe
    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
    import java.io.File;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.Collection;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Map;
    import java.util.TreeMap;
    import java.util.Map.Entry;
    import java.util.logging.Level;
    import java.util.logging.Logger;
     
    public class App {
     
        public static Connection connectionToMemory;
        public static Connection connectionToFile;
     
        public static void main(String[] args) throws InstantiationException, IllegalAccessException, SQLException {
     
            //HSQL DB
            System.out.println("HSQLDB TEST");
            System.out.println("-----------");
            connectToHsqlDB();
     
            System.out.println("Return code de la création de la table:" + 
                    executeQuery("CREATE TABLE test (" +    "colonne1 INTEGER NOT NULL , colonne2 INTEGER NOT NULL )" )); 
     
            System.out.println("Return code de l'insertion de la table:" + 
                    executeQuery("INSERT INTO test(colonne1,colonne2) VALUES (1 , 2) )")); 
     
            int j = 2;
            for (int i = 2; i <= 10; i++) {
                executeQuery("INSERT INTO test(colonne1,colonne2) VALUES (" + i + " ," + j + ")");
            }
     
            ResultSet resultSet = getSQLResult("SELECT * FROM test");
     
            if (! resultSet.equals(null)) {
                while (resultSet.next()) {
                    System.out.println("Colonne1:" + resultSet.getInt("colonne1") 
                                    + " Colonne2:" + resultSet.getInt("colonne2"));
                }
            }
    }
     
        public static void connectToHsqlDB() throws InstantiationException, IllegalAccessException, SQLException
        {
            try { DriverManager.getDriver("jdbc:hsqldb:mem:testpvu");
            } catch (SQLException ex) {
                Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                Class.forName("org.hsqldb.jdbcDriver").newInstance();
            } catch (ClassNotFoundException ex) {
                Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {
                //connectionToFile = DriverManager.getConnection("jdbc:hsqldb:file:database;shutdown=true","SA","");
                connectionToMemory = DriverManager.getConnection("jdbc:hsqldb:mem:testpvu;shutdown=true", "SA", "");
                //Backup DB
                Statement statement = connectionToMemory.createStatement();
                statement.executeQuery("SHUTDOWN");
                statement.close();
            } catch (SQLException ex) {
                Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
            } catch (Exception ex) {
                System.out.println("Unhandeld exception:" + ex.getMessage());
            }
        }
     
        public static int executeQuery(String query) {
     
            try {
                Statement statement = connectionToMemory.createStatement();
                return statement.executeUpdate(query);
            }
            catch (SQLException ex) {
              Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
            }
            catch (Exception ex) {
              System.out.println("Unhandeld exception:" + ex.getMessage());
            }
            return -1;
        }
     
        public static ResultSet getSQLResult(String query) {
            try {
                Statement statement = connectionToMemory.createStatement();
                return statement.executeQuery(query);
            }
            catch (SQLException ex) {
                Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
              }
              catch (Exception ex) {
                System.out.println("Unhandeld exception:" + ex.getMessage());
              }
              return null;        
        }
    }
    Quelqu'un saurait-il m'explique d'où vient le problème ?

    Merci d'avance pour votre aide.

  2. #2
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Salut,

    Comme l'indique l'exception, ta session est fermée...

    En fait, le probleme est que dans ta fonction "connectToHsqlDB", tu envoyes une commande SHUTDOWN, ce qui arrete la session. Donc les requetes executées apres ne sont pas executées.

    La commande SHUTDOWN doit etre executée mais uniquement à la fin du programme...

    a+

  3. #3
    Membre à l'essai
    Profil pro
    ABCD
    Inscrit en
    Mai 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : ABCD

    Informations forums :
    Inscription : Mai 2008
    Messages : 18
    Points : 21
    Points
    21
    Par défaut
    Un grand merci ça m'a bien aidé .
    Tout fonctionne bien.

Discussions similaires

  1. Problème sur l'utilisation de l'aPi en 1.3
    Par ncroiset dans le forum IGN API Géoportail
    Réponses: 8
    Dernier message: 11/06/2012, 13h48
  2. Problème sur l'utilisation de javaDB
    Par egondragon dans le forum JDBC
    Réponses: 0
    Dernier message: 29/08/2011, 10h02
  3. Problème sur l'utilisation d'index
    Par guicecal dans le forum SQL
    Réponses: 5
    Dernier message: 15/07/2010, 17h03
  4. problème sur l'utilisation d'un module si interface graphique
    Par ohtoulouse dans le forum Général Python
    Réponses: 0
    Dernier message: 02/06/2010, 15h09
  5. Problème sur une utilisation Trigger/sequence
    Par bstevy dans le forum SQL
    Réponses: 3
    Dernier message: 04/11/2009, 17h26

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