2010-09-28 3 views
6

Besoin de déplacer la base de données et les fichiers journaux des fichiers JavaDB (derby) db dans les répertoires de déploiement. La base de données fonctionne dans le répertoire de démarrage de l'application car JavaDB crée un dossier avec le nom de la base de données (dans mon cas mydb), mais je veux déplacer ce répertoire dans un sous-répertoire appelé data/creation data/mydb. Je peux le faire avec l'appel de connexion:Programmation de derby.system.home

DriverManager.getConnection("jdbc:derby:data/mydb;create=false"); 

et cela fonctionne. Mais je voudrais définir explicitement la programmation valeur de

derby.system.home = données/
derby.stream.error.file = log/derby.log

Je peux faire:

DriverManager.getConnection("jdbc:derby:mydb;create=false"); 

et tous les dbs seraient dans ce répertoire/data. Et le fichier journal derby serait dans les journaux /! Je n'arrive pas à comprendre ça. Quelqu'un aide-t-il? Existe-t-il un moyen de définir ces propriétés par programme (car il est intégré)?

Répondre

5

Le documentation (Derby developers guide: Setting Derby properties) suggère quelque chose comme:

Properties p = System.getProperties(); 
p.setProperty("derby.system.home", "C:\databases\sample"); 

J'ai aussi vu

/* setting an attribute in a Properties object */ 
Properties myProps = new Properties(); 
myProps.put("create", "true"); 
Connection conn = DriverManager.getConnection("jdbc:derby:sampleDB", myProps); 
+0

Cela fonctionne pour les propriétés de base de données et je l'utilise en fait quelque chose proche de cela dans mon code. Mais cela ne fonctionne pas pour les propriétés à l'échelle du système. –

+0

Le lien dans la réponse contient le code ci-dessus dans la section * Définition des propriétés Derby * -> * Modification des propriétés à l'échelle du système par programmation *. Donc l'erreur est peut-être ailleurs dans votre code. (Vous pouvez également essayer l'autre approche, "Modification des propriétés à l'échelle du système en utilisant le fichier derby.properties".) – aioobe

+1

Non, vous avez raison! La première partie m'a amené à descendre le bon chemin. J'ai donc ajouté: System.setProperty ("derby.system.home", "./data/") et System.setProperty ("derby.stream.error.file", "../log/derby.log") ; (<- c'était parce que le répertoire racine est maintenant data /) et tout fonctionne très bien! Ouais je ne veux pas utiliser un fichier derby.properties –