我有一个服务器端应用程序,它使用以下URL创建数据库:
jdbc:derby:abssposdb;create=true
这将在项目文件夹中创建derby数据库。 我正在使用以下代码
为此数据库启动网络服务器String[] args = {"start", "-h", "0.0.0.0", "-p", "4321"};
try {
org.apache.derby.drda.NetworkServerControl.main(args);
} catch (Exception e) {
}
现在,为了连接到这个数据库,我必须使用的URL是
jdbc:derby://192.168.1.12:4321/C:\Users\mtahm\Documents\NetBeansProjects\derbyEmbeded\abssposdb
正如您所看到的,必须指定整个路径。这是一个问题,因为对我来说因为我需要使用下面的URL访问这个derby服务器,所以整个应用程序将是动态的
jdbc:derby://192.168.1.12:4321/abssposdb
我猜某种背景服务或类似的东西将是必需的,但我不知道如何做到这一点。有这样做的技术吗?我的整个项目都是Java。
答案 0 :(得分:0)
不要使用“jdbc:derby:abssposdb; create = true”创建数据库,因为它旨在创建嵌入式数据库。服务器不知道您正在创建的嵌入式数据库,这就是您需要指定此数据库的完整路径的原因。 创建可通过简单名称访问的DB所需要做的就是使用特殊的连接URL连接到此服务器(在您通过NetworkServerControl.main()启动之后),如下所示:
jdbc:derby://192.168.1.12:4321/abssposdb;create=true
请注意此网址末尾的“create = true”,这将创建可在网址jdbc:derby://192.168.1.12:4321/abssposdb
上访问的数据库(如果它尚不存在),或者只是连接到它存在。
答案 1 :(得分:0)
Derby Network Server通过针对derby.system.home(Derby Network Server的“home”目录)解释这些相对路径名来查找以相对路径名命名的数据库。
有关derby.system.home的更多信息,请参阅:http://db.apache.org/derby/docs/10.11/ref/rrefproper32066.html
您可以通过控制Derby网络服务器的derby.system.home值来控制连接URL的数据库名称部分的解释。这里有更多信息:http://db.apache.org/derby/docs/10.11/devguide/cdevdvlp34964.html#cdevdvlp34964
所以:你的数据库可以放在任何地方;您的Derby Network Server可以在任何计算机上运行,并且可以为该计算机上的任何数据库提供服务请求。但是,要将这些内容组合在一起,您需要为要存储数据库的位置建立一些组织和策略,并且通过使用诸如derby.system.home之类的约定,您可以确保您的数据库不会遍布各处。 ,但收集在一个位置,供您查找何时需要备份,升级等等。