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 et Java : problème bizarre


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Par défaut HSQLDB et Java : problème bizarre
    Bonjour,
    Je suis nouveau sur le forum et j'ai rencontré un problème dans mon prog java. La connexion au driver HSQL fonctionne mais apres mes INSERTS ne sont pas reportés dans le fichier script de ma bd.

    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
    public class Main {
     
    	/**Permet de tester la connexion à la BD
             * 
             */
    	public static void main(String[] args) throws SQLException {
     
    		String nom = "Tintin";
    		String auteur = "Hergé";
     
    		ConnexionBD c1 = new ConnexionBD();	
     
            Requete r = new Requete(c1);         
     
            r.creation(nom, auteur);
     
            c1.fermer();
    	}
    }
    et la méthode création :
    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
     
    public void creation(String name, String auteur) throws SQLException {
     
    		Date date = Date.valueOf("2004-10-20");
     
    		PreparedStatement ps = c1.conn.prepareStatement("INSERT INTO Livre(Label, Créateur, Date_Création) VALUES (?,?,?)");
    		try {
    			ps.setString(1, name);
    			ps.setString(2, auteur);
    			ps.setDate(3, date);
    			ps.executeUpdate();
     
    		}
    		finally 
    	    {
    	      ps.close();
    	    }
    	}
    Quand j'execute aucune erreur mais le tuple inséré n'apparait pas dans le fichier script !!! J'ai d'abord pensé à un problème de connexion mais la ligne créée est apparue dans le script après plusieurs essais... Depuis j'ai recommencé mais sans succès !! Pourquoi cela n'aurait il marché qu'une seule fois ?? (je me demande si j'ai été clair...).

    Merci d'avance pour vos conseils !!

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    C'est quoi "le fichier script de ma bd" ?

    Sinon essaye d'ajouter catch(SQLException e) dans ta methode creation et affiche la trace de l'erreur (si il s'en produit une)

    Sinon autre chose, essaye de tu de mettre le meme enregistrement a chaque fois ou un enregistrement different ? As-tu defini une clef primaire ?

  3. #3
    Membre averti
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Par défaut
    Lors de la création d'une base de données sous HSQL, 4 fichiers sont créés : log, script, lck et properties. Je sais que le fichier script indique le contenu de la base de données ( create table, insert, update, etc...). Actuellement dans ce fichier script je n'ai que mes tables et il devrait y avoir les inserts générés par le prepareStatement...

    J'ai essayé d'ajouter un catch mais toujours pas d'erreur...

    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
    public void creation(String name, String auteur) throws SQLException {
     
    		Date date = Date.valueOf("2004-10-20");
     
    		PreparedStatement ps = c1.conn.prepareStatement("INSERT INTO Contexte (Label, Créateur, Date_Création) VALUES (?,?,?)");
    		try {
    			ps.setString(1, name);
    			ps.setString(2, auteur);
    			ps.setDate(3, date);
    			ps.executeUpdate();						
    		}
    		catch (SQLException e){
    			throw e;
    		}
    		finally 
    	    {
    	      ps.close();
    	    }
    	}
    Voila ce qui apparait dans la console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Connexion active
    Connexion : org.hsqldb.jdbc.jdbcConnection@fec107
    Connexion terminée.
    Sinon, j'essaye toujours avec le même enregistrement et il y a bien une clé primaire (name). Quand ca avait fonctionné (la seule fois) je ne pouvais plus recommencer à exécuter mon prog (erreur : violation de clé primaire..)

    Merci d'avance

  4. #4
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Si tu fais e.printStackTrace() dans ton catch ?
    ca affiche quelque chose ?

  5. #5
    Membre averti
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    catch (SQLException e){
    			e.printStackTrace();
    		}
    J'ai essayé comme ca mais toujours aucune erreur et rien n'a été ajouté dans la BD.

  6. #6
    Membre averti
    Inscrit en
    Février 2007
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 21
    Par défaut
    Je crois avoir trouvé !!
    Lors des executions multiples de mon prog, la ligne SET WRITE_DELAY 10 s'affichait dans le fichier log. Après recherche j'ai cru comprendre que ca correspondait au temps mis par l'application pour écrire les nouveaux enregistrements dans le fichier log.
    Sous HSQL j'ai donc modifié ce temps en utilisant la commande SET WRITE_DELAY 0 et ca marche maintenant les tuples apparaissent dans le fichier log.

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

Discussions similaires

  1. Probléme bizarre de lecteur
    Par wazer dans le forum Périphériques
    Réponses: 1
    Dernier message: 11/10/2005, 08h52
  2. [JAVA] Problème supression noeud d'un document XML
    Par vero59 dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/08/2005, 16h12
  3. [Eclipse][Java]Problème de compilation sur CTRL+S
    Par ZeKiD dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 27/05/2004, 11h49
  4. [Saut de ligne] Problèmes bizarre
    Par gandalf_le_blanc dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 06/04/2004, 14h06
  5. problèmes bizarres avec jdbc
    Par jaimepasteevy dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 12/12/2003, 12h00

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