bmikl59
Messages postés77Date d'inscriptionlundi 5 septembre 2005StatutMembreDernière intervention14 février 2008
-
14 déc. 2006 à 15:49
bmikl59
Messages postés77Date d'inscriptionlundi 5 septembre 2005StatutMembreDernière intervention14 février 2008
-
15 déc. 2006 à 13:27
Bonjour a tous
Voila, je suis actuellement en train de coder une application de gestion de bibliotheque.
Pour la base de donnée, j'ai choisi d'utiliser HSQLDB.
Il m'interresse par sa portabilité
Je fais un test de detecion de la base.
Si celle ci n'existe pas, je lance une connexion qui va créer la bdd et une procedure qui va créer les table de ma bdd :
Voila mon main() :Connexion con new Connexion();File f
new File(
"c:\\Documents and Setting\\MBIA\\Mes Documents\\WorkSpace\\Biblio\\biblio.lck");
....
création de toute mes tables sur le meme principe
...
return
"Creation base de donnée OK";}
catch (SQLException err){
System.
out.print(err.getMessage());
return err.getMessage();}
}
Bon, je vous demande pas de verifier tous le code bien sur mais comme je decouvre HSQLDB, je souhaite un peu d'aide
La1ere question que je me pose est "Est ce que cest correct? (dans l'idée)"
La 2eme est y a t'il un moyen de verifier si les tables sont correctement créer?
J'ai l'impression qui n'execute pas la proc Create Table alors qu'il rentre dedans mais n'envoie pas de retour de try ou de catch mais me renvoie l'erreur Connexion NOK de createBDD
Bon, je sais pas si c'est explicite tous ca donc meaculpa, mais la j'ai un peu de mal
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 15 déc. 2006 à 11:27
La je vois pas trop ce qui peut ce passer , essayer de rajouter un peu partout des System.out.println("creation de la table machin"); regarde aussi s'il tu catch toutes les exceptions, et si la base est créer au bon endroit.
il faut peut etre aussi faire un statement par execute
version
stmt = con.createStatement();
stmt.execute....
stmt.close
stmt = con.create....
et ansi de suite
++
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 14 déc. 2006 à 18:10
Salut.
Une petite remarque, au lieu de faire un system.out.println(ex.getMessage()); tu fait un e.printStackTrace(), cela permet d'avoir directement la ligne qui deconne.
Il faudrait que tu donne le message d'erreur qu'il y a pour que l'on puisse aider.
Apres il faut peut etre pas mettre de point virgule dans tes requetes (c'est juste une idée car dans certaine bases de données les ";" donne des erreurs de syntaxe sql)
Il faudrait que teste séparément tes requetes sql pour voir s'il elle sont correctes.
apres, pour creer des table, il ne faut pas utiliser la methode executequery de l'objet statement mais la methode executeupdate
Ce qui m'amene à un nouveau probleme, la syntaxe sql reconnu par HSQLDB
J'ai utilisé la meme syntaxe de création de table que j'utilse pour une bdd MySQL, mais ce coup ci , il m'envoi chier sur la table AUTEUR
La 1ere table passe donc les commande sont correcte, c'est surement sur la syntaxe de create table qui m'embete(ptet le foreign key pour la clé secondaire)
Je continue a chercher
Vous n’avez pas trouvé la réponse que vous recherchez ?
bmikl59
Messages postés77Date d'inscriptionlundi 5 septembre 2005StatutMembreDernière intervention14 février 2008 15 déc. 2006 à 10:53
trop bizarre, j'ai des procedure correctes
alors ce qui se passe, c'est que quand j'execute le programme pas a pas (avec eclipse), il me créer bien mes tables (je verifie dans le script genere par HSQLDB j'ai bien tous mes créate table)
mais quand j'execute directement sans passe pas le debug, je ne les ai pas
cs_laurent1024
Messages postés987Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention30 août 201225 15 déc. 2006 à 11:08
Dans ton code on vois pas si tu as fermé ton statement et ta connexion, je sais pas si ca va résoudre ton problème, mais ca peut géner le fonctionnement de ta base. Si tu execute ton programme en mode normal, il va peut etre se terminer sans avoir fermer les connexions à la base de données et du coup, il n'y a pas de "commit" de fait.
bmikl59
Messages postés77Date d'inscriptionlundi 5 septembre 2005StatutMembreDernière intervention14 février 2008 15 déc. 2006 à 13:27
c'est bien ca
un statement par execute
ne pas oublié le shutdown pour vider la memoire sur le disque dur et à la reconnecyion de la bdd, il charge les propriete pour reformer la base de donnée