2010-09-28 18 views
6

È necessario spostare il database e registrare i file dei file db JavaDB (derby) nelle directory di distribuzione. Il database funziona nella directory di avvio dell'applicazione poiché JavaDB crea una cartella con il nome del database (nel mio caso mydb), ma voglio spostare quella directory in una sottodirectory data/create data/mydb. Posso farlo con la chiamata di connessione:Impostazione predefinita derby.system.home

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

e questo funziona. Ma mi piacerebbe impostare a livello di codice in modo esplicito il valore di

derby.system.home = dati/
derby.stream.error.file = log/derby.log

Così posso fare:

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

e tutti i dbs sarebbero in quei dati/dir. E il file di log di derby sarebbe nei registri /! Non riesco proprio a capirlo. Qualcuno aiuto? C'è un modo per impostare queste proprietà in modo programmatico (perché è incorporato)?

risposta

5

Il documentation (Derby developers guide: Setting Derby properties) suggerisce qualcosa di simile:

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

Ho visto anche

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

Questo funziona per le proprietà del database e io in realtà usare qualcosa vicino a questo nel mio codice. Ma questo non funziona per le proprietà di sistema. –

+0

Il collegamento nella risposta contiene il codice precedente nella sezione * Impostazione delle proprietà Derby * -> * Modifica delle proprietà a livello di sistema a livello di *. Quindi l'errore è forse altrove nel tuo codice. (Si potrebbe anche provare l'altro approccio, "Modifica delle proprietà del sistema utilizzando il file derby.properties". – aioobe

+1

No sei corretto! La prima parte mi ha fatto andare lungo il percorso corretto. Così ho aggiunto: System.setProperty ("derby.system.home", "./data/") e System.setProperty ("derby.stream.error.file", "../log/derby.log") ; (<- questo perché la directory principale è ora data /) e tutto funziona alla grande! Sì, non voglio usare un file derby.properties. –

Problemi correlati