romuluslepunk
Messages postés11Date d'inscriptionmercredi 10 août 2005StatutMembreDernière intervention 6 décembre 2006
-
19 juil. 2006 à 16:45
romuluslepunk
Messages postés11Date d'inscriptionmercredi 10 août 2005StatutMembreDernière intervention 6 décembre 2006
-
2 août 2006 à 17:48
Bonjour,
j'ai optez pour HSQLDB comme base de données embarqué.
Lors du premier lancement du programme, il créera la base avec ses tables et des insertions dans les tables en se basant sur des fichiers textes.
Mon problème est lors des INSERT lors de la creation de la base :
<li>j'insère 82 enregistrements dans une table -> ok</li><li>j'insere 212 enregistrements dans une autre table -> ok</li><li>j'insère 16 enregistrements dans une 3ème table -> Il n'y a que les
4 1er qui persistent, les autres enregistrements ne sont pas dans la
table...</li>Le plus étrange est que je n'est aucune erreur retournée..
J'ai essayer de permuter la table 1 et 3 (d'abord inserer les 16 enregistrements puis les 82), mais il me manque toujours 12 enregistrements dans la 1ere table (dont j'ai fait les INSERT en dernier...)
J'ai cherché sur leur site mais je n'est trouvé aucun texte sur une capacitée limité des bases de données, donc je suppose que le problème vient d'autres part mais je suis un peu perdu.
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 19 juil. 2006 à 17:10
Vraiment étrange ton problème, j'avais créer un serveur de chat avec un HSQLDB en embarqué et je n'ai pas eu ce genre de problème. A mon avis cela n'est pas une limitation de la base ...
Mon code est bon car les liste sont ok et mes boucles aussi (j'ai tester avec System.out.println(reqGeneral.get(i).get(y)), et tout est bien inscrit).
Apres, la connexion est referme, je verifie mes lignes avec Quantum (dans Eclipse) et il me manque toujours les 12 dernier enregistrements inséré...
Vous n’avez pas trouvé la réponse que vous recherchez ?
romuluslepunk
Messages postés11Date d'inscriptionmercredi 10 août 2005StatutMembreDernière intervention 6 décembre 2006 19 juil. 2006 à 18:23
non j'ai toujours le même problème.
Ce qui me fait tourner le plus en bourique, c'est que toutes les requetes sont bien éxecutées !!!
J'ai ajoute catch (Exception e) à catch (SQLException e) pour vérifier les erreurs en détails mais il n'y a aucun problème.
J'ai essayer aussi avec un autre nom de base (j'ai cru a une histoire de cache ou quelque chose dans le genre) mais le problème persistent.
romuluslepunk
Messages postés11Date d'inscriptionmercredi 10 août 2005StatutMembreDernière intervention 6 décembre 2006 19 juil. 2006 à 21:27
Je pense avoir ciblé le problème d'un peut plus près :
Juste après la création de la base, je fais un SELECT sur la dernière table qui a eu les INSERT, et j'ai bien tout les enregistrements.
Ensuite je ferme la connexion et stop le programme.
Je redemarre le programme (cette fois sans créer la base de données mais en se connectant simplement), refait le SELECT et il me manque toujours les 12 derniers enregistrements
Il ne se trouve pas dans le fichier .script de la base non plus...
Donc le problème survient lors de la fermeture ou de l'ouverture de la connexion.
Voici comment j'ouvre et ferme ma connexion :
private static final String driver = "org.hsqldb.jdbcDriver";
private static final String url = "jdbc:hsqldb:bdd/bdd";
private static final String pseudo = "sa";
private static final String password = "";
private Connection connnexion = null;
private Statement stat = null;
romuluslepunk
Messages postés11Date d'inscriptionmercredi 10 août 2005StatutMembreDernière intervention 6 décembre 2006 20 juil. 2006 à 00:11
J'ai fait des tests et je suis sure que ma connexion est bien fermé.
Toutefois, c'est pas lors de la déconnexion qu'il crée le fichier .script ? Moi il me le fait à la connexion en reprenant le fichier log...
Malgré que ma connexion est bien fermé, j'ai des erreurs qui surviennent certaine fois (1 fois sur 2 en général) lors de la connexion (lorsque je relance le programme) me disant que la base est deja utilisé...
Toutes mes requetes INSERT sont executé j'en suis sur, c'est au niveau de l'enregistrement dans le fichier log que sa pose problème.
J'ai l'impression qui veut pas dépasser les 17ko...
Je me demande si je vais pas voir du coté de Derby
Merci pour l'idée du débogage
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 20 juil. 2006 à 01:29
Il crée le script à l'arrêt de HSQLDB je crois, il vide sa mémoire dans le fichier script. C'est marqué dans la documentation peu exhaustive :s Lit bien la doc je crois que j'avais eu un problème similaire mais au final tout marchait bien pour moi :p Vérifie bien que tu n'as plus aucun processus qui tourne car les données sont enregistrées au shutdown du serveur. A mon avis ton problème peut venir de là ... après pourquoi les 12 dernières lignes ??? Mais doit bien y avoir une réponse quand même ;-)
Fait du pas à pas avec le debugage de Eclispe pour en être vraiment sur, je pense que tu y gagneras à bien regarder TOUTES les étapes de la JVM ... ;-) Après je pourrais pas beaucoup t'aider plus ;-)
romuluslepunk
Messages postés11Date d'inscriptionmercredi 10 août 2005StatutMembreDernière intervention 6 décembre 2006 20 juil. 2006 à 02:46
les INSERT sont bien executé, j'en suis sur, sinon :
<li>j'aurai mes erreur catch()</li><li>j'arriverai pas a les recuperer via SELECT avant la deconnexion</li>Ma connexion est bien fermé, je test avec isClosed() (et il devrait me creer le fichier .script mais il ne le fait pas)
Sous Eclipse, pour le debugage, il suffit de mettre des point d'arret et de lancer via le bouton avec 'une petite puce' ?
Je suis débutant et je comprend pas vraiment tout dans la perspective de debogage, en général je debug avec des test, catch et autre...
L'application fait quelque ko, je la mettrai en ligne demain (là il se fait tard ), si des personnes peuvent tester chez elle (c'est peut etre un problème 'local')...
Demain j'irai revoir la doc.
Déjà un grand merci, je suis sûre qu'on va trouver le bout