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 :

[HSQLDB]fonctionnement bizarre :/


Sujet :

JDBC Java

  1. #1
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut [HSQLDB]fonctionnement bizarre :/
    Bonjour ,

    Tout d'abord je précise que j'ai déjà fait une recherche sur le forum et consulté la doc officielle (mais bon mon niveau en anglais laisse à désirer...)
    Je suis en train de découvrir HSQLDB et je n'arrive pas à comprendre pourquoi les données persistent que lorsque je fais un SHUTDOWN ?

    Voici un exemple de code qui marche :

    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
    package testhsqldb;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    /**
     *
     * @author frikha
     */
    public class Main {
        
        /** Creates a new instance of Main */
        public Main() {
        }
        
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) {
            try{
                Class.forName("org.hsqldb.jdbcDriver").newInstance();
                System.out.println("Classe trouvée !");
            }catch(ClassNotFoundException ex){
                ex.printStackTrace();
            }catch(Exception e){
                e.printStackTrace();
            }
            
            try {
                
                Connection c = DriverManager.getConnection("jdbc:hsqldb:file:./data/mydb", "sa", "");
                System.out.println("Connection établie !");
                Statement st=c.createStatement();
                System.out.println(st.execute("INSERT INTO animaux VALUES('chien')"));
                
                Statement str=c.createStatement();
               
                ResultSet rs=str.executeQuery("SELECT * FROM animaux");
                
                int i=0;
                while(rs.next()){
                    System.out.println(rs.getString(1)+"  "+(++i));
                }
                
                str.execute("SHUTDOWN");
                
            
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
            
            
        }
        
    }
    Si j'enlève la ligne en rouge, les données ne persistent plus : elles ne s'affichent pas dans le SELECT
    Ceci est d'autant plus bizarre que le SHUTDOWN intervient après le INSERT et le SELECT

    Quelqu'un pourrait m'expliquer s'il vous plait ?



    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    D'après ce que j'ai compris de la doc, hsqldb a l'air de fonctionner avec un cache et donc, la méthode SHUTDOWN permet de passer les données du cache dans le fichier .script. Ainsi au lancement, les données de la fois précédente seront relancées en cache

  3. #3
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Si je suis ton raisonnement, il faut que je fasse un SHUTDOWN après chaque requète, ce qui revient à lancer/arréter HSQLDB à chaque requète et comme HSQLDB est une application java, ça va plomber les performances, non ?

    Je pense qu'il doit y avoir une autre manière d'agir, mais laquelle ? c'est ça la question !

    P.S : j'utilise une CACHED TABLE.


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par afrikha
    Si je suis ton raisonnement, il faut que je fasse un SHUTDOWN après chaque requète, ce qui revient à lancer/arréter HSQLDB à chaque requète et comme HSQLDB est une application java, ça va plomber les performances, non ?

    Je pense qu'il doit y avoir une autre manière d'agir, mais laquelle ? c'est ça la question !

    P.S : j'utilise une CACHED TABLE.
    Non, le passage du cache dans les fichiers se fait seulement à la fermeture du programme, à chaque fois que tu fermes le programme, il faut absolument que tu le fermes avec SHUTDOWN.

    Je ne connais pas CACHED TABLE, donc il peut y avoir une autre variante.

  5. #5
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Citation Envoyé par wichtounet
    Non, le passage du cache dans les fichiers se fait seulement à la fermeture du programme, à chaque fois que tu fermes le programme, il faut absolument que tu le fermes avec SHUTDOWN.
    A ce moment là, pour visualiser les données dans le cache,pendant mon programme, je fais comment ?


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  6. #6
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par afrikha
    A ce moment là, pour visualiser les données dans le cache,pendant mon programme, je fais comment ?
    Ben, ca change rien pour toi, tu fais tes select comme tu veut et le driver HSQL va se charger de le chercher dans le cache. Les données sont toujours contenus dans le cache, sauf quand tu fermes la connection à la base de données, à ce moment-là, elles sont stokées dans dans des fichiers, puis au démarrage, elles sont à nouveau montées en cache.


    Je me demande par contre si j'ai bien compris ton problème, en fait...

  7. #7
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Citation Envoyé par wichtounet
    Ben, ca change rien pour toi, tu fais tes select comme tu veut et le driver HSQL va se charger de le chercher dans le cache. Les données sont toujours contenus dans le cache, sauf quand tu fermes la connection à la base de données, à ce moment-là, elles sont stokées dans dans des fichiers, puis au démarrage, elles sont à nouveau montées en cache.


    Je me demande par contre si j'ai bien compris ton problème, en fait...
    Peut-étre, mais c'est sùrement parceque je n'étais pas assez clair.
    Je vais essayer de réexpliquer autrement :
    Supposons que je crées un Dao faisant partie d'une application avec IHM, je peux alors faire des requètes depuis n'importe où dans mon programme et n'appeler le SHUTDOWN que lors de la fermeture de ma fenetre principale. Ma question : est-ce réalisable ?
    Suis-je clair ? non ?

    En tous cas merci pour vos reponses

    P.S : Comme je suis en phase de découverte, j'aurais voulu savoir si Derby fonctionne de la mème manière ?


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  8. #8
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par afrikha
    Peut-étre, mais c'est sùrement parceque je n'étais pas assez clair.
    Je vais essayer de réexpliquer autrement :
    Supposons que je crées un Dao faisant partie d'une application avec IHM, je peux alors faire des requètes depuis n'importe où dans mon programme et n'appeler le SHUTDOWN que lors de la fermeture de ma fenetre principale. Ma question : est-ce réalisable ?
    Suis-je clair ? non ?

    En tous cas merci pour vos reponses

    P.S : Comme je suis en phase de découverte, j'aurais voulu savoir si Derby fonctionne de la mème manière ?
    Pour Derby, je peut pas te répondre, mais pour ce qui est d'HSQL, je l'emploie depuis un bon moment. Il suffit de faire un seul SHUTDOWN à la fermeture du programmme. Tu es obligé de le faire, sinon tu pers toutes les infos de cette session...

    Tu peut bien entendu faire des requêtes depuis n'importe où dans ton programme, le driver HSQL s'occupppera lui-même de les effectuer dans le cache.

  9. #9
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Citation Envoyé par wichtounet
    Pour Derby, je peut pas te répondre, mais pour ce qui est d'HSQL, je l'emploie depuis un bon moment. Il suffit de faire un seul SHUTDOWN à la fermeture du programmme. Tu es obligé de le faire, sinon tu pers toutes les infos de cette session...

    Tu peut bien entendu faire des requêtes depuis n'importe où dans ton programme, le driver HSQL s'occupppera lui-même de les effectuer dans le cache.
    OK, merci beaucoup wichtounet
    Je vais me lancer plus sérieusement alors avec HSQL.

    P.S : Si ça foire, je reviens te


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  10. #10
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Citation Envoyé par afrikha
    OK, merci beaucoup wichtounet
    Je vais me lancer plus sérieusement alors avec HSQL.
    Bonne chance

    Personnnellement, je l'emploie beaucoup, c'est dans une application ou je laisse le choix entre une base MYSQL et une base embarquée HSQL.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/10/2007, 10h22
  2. [IE/FF] Balise <object>, fonctionnement bizarre sous IE
    Par m312 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 25/07/2007, 18h19
  3. [Swingx auto complete] fonctionne bizarre
    Par grabriel dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 17/07/2007, 16h18
  4. TWebBrowser qui fonctionne bizarrement
    Par sillycoder dans le forum Delphi
    Réponses: 2
    Dernier message: 18/07/2006, 11h00
  5. Fonctionnement bizarre Dbase Memo
    Par zarbouine dans le forum Bases de données
    Réponses: 3
    Dernier message: 27/04/2006, 10h11

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