Base de données SQLITE dans JAR

yoanpg
Messages postés
145
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
22 février 2021
- 24 déc. 2014 à 14:19
yoanpg
Messages postés
145
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
22 février 2021
- 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 :)

1 réponse

KX
Messages postés
16584
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2022
124
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
145
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
22 février 2021
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
16584
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2022
124
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
145
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
22 février 2021
3
24 déc. 2014 à 19:20
Ok, merci de tes infos :)
0