Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式设置derby.system.home_Java_Derby_Javadb - Fatal编程技术网

Java 以编程方式设置derby.system.home

Java 以编程方式设置derby.system.home,java,derby,javadb,Java,Derby,Javadb,需要将JavaDB(derby)db文件的数据库和日志文件移动到部署目录中。数据库在应用程序启动目录中工作,因为JavaDB创建了一个带有数据库名称的文件夹(在我的例子中是mydb),但我想将该目录移动到名为data/creating data/mydb的子目录中。我可以通过“连接”呼叫执行此操作: DriverManager.getConnection("jdbc:derby:data/mydb;create=false"); 这是有效的。但是我想通过编程显式地设置 derby.system

需要将JavaDB(derby)db文件的数据库和日志文件移动到部署目录中。数据库在应用程序启动目录中工作,因为JavaDB创建了一个带有数据库名称的文件夹(在我的例子中是mydb),但我想将该目录移动到名为data/creating data/mydb的子目录中。我可以通过“连接”呼叫执行此操作:

DriverManager.getConnection("jdbc:derby:data/mydb;create=false");
这是有效的。但是我想通过编程显式地设置

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

所以我可以做到:

DriverManager.getConnection("jdbc:derby:mydb;create=false");
所有的数据库都在数据/dir中。derby日志文件将位于logs/!我只是想不通。有人帮忙吗?有没有办法通过编程设置这些属性(因为它是嵌入式的)?

建议如下:

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

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

这适用于数据库属性,实际上我在代码中使用了类似的东西。但是这对系统范围的属性不起作用。答案中的链接包含上面的代码,在“设置Derby属性->以编程方式更改系统范围的属性”一节中。因此,错误可能在代码的其他地方。(您也可以尝试另一种方法,“通过使用derby.properties文件更改系统范围的属性”。不,您是对的!第一部分让我走上了正确的道路。Duh这是一个该死的系统属性。因此,我添加了:system.setProperty(“derby.system.home”、“/data/”;和system.setProperty(“derby.stream.error.file”、“./log/derby.log”);(@aioobe链接已断开