Base de données SQLITE dans JAR

yoanpg Messages postés 156 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 20 janvier 2024 - 24 déc. 2014 à 14:19
yoanpg Messages postés 156 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 20 janvier 2024 - 24 déc. 2014 à 19:20
Bonjour à tous,

Je fais une application Java, dont le but est d'avoir tout en un seul fichier. J'exporte donc mon application en JAR avec Eclipse, et j'ai utilisé des getResource() pour tous mes fichiers images. Donc pour ça pas de problème, il va bien chercher les images dans le JAR.

Là ou je coince, c'est pour ma base de données SQLITE. J'ai vu des infos comme quoi on pouvait utiliser :
Connection c DriverManager.getConnection("jdbc:sqlite::resource:database.sqlite");

Le ::resource permet visiblement d'aller cherche la base données à l'intérieur du JAR. Mais je n'y arrive pas. En plus, visiblement il crée une copie de cette base de données dans un dossier temporaire, ce qui fait que je peux pas retrouver la base de données modifiées via l'application.

Fondamentalement, ça ne me dérange pas qu'il crée une copie temporaire, mais il faudrait que la copie soit réincluse dans le JAR lorsque le programme est quitté.

Sinon, avez-vous d'autres idées pour inclure une base de données SQLITE dans un JAR ?

Merci d'avance de votre aide :)
A voir également:

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
24 déc. 2014 à 16:46
Bonjour,

il faudrait que la copie soit réincluse dans le JAR lorsque le programme est quitté
Un JAR n'est pas fait pour cela. Une base de données c'est censé vivre, on fait des ajouts des suppressions etc. alors qu'un JAR c'est figé. Pour chaque version de ton code tu as un JAR différent, tu ne modifies pas ton JAR entre deux exécutions du programme...

Le ::resource permet visiblement d'aller cherche la base données à l'intérieur du JAR
Ça peut se faire mais uniquement pour une base donnée en lecture seule, dans ce cas tu dois passer le chemin avec des slashs
jdbc:sqlite::resource:com/myproject/database.db
0
yoanpg Messages postés 156 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 20 janvier 2024 3
24 déc. 2014 à 18:19
Merci de ta réponse. Donc ce que tu dis c'est que je serai obligé d'avoir un fichier externe à mon JAR pour ma base de données ?
Pas de solution possible ?
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
24 déc. 2014 à 19:13
Honnêtement, c'est peut être faisable. Mais la bonne pratique c'est effectivement d'avoir des fichiers à part.
C'est comme ça que fonctionne n'importe quel programme : jamais un .exe ne va se modifier tout seul !
Ainsi tu peux passer ton programme d'un utilisateur à l'autre sans polluer le deuxième avec les données du premier. Et je parle même pas des problème que tu t'évites dans le cas où un même utilisateur voudrait lancer deux fois le même programme en même temps...
0
yoanpg Messages postés 156 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 20 janvier 2024 3
24 déc. 2014 à 19:20
Ok, merci de tes infos :)
0
Rejoignez-nous