如何从另一台计算机连接到JavaDB?

时间:2015-04-21 15:30:09

标签: java apache jdbc derby javadb

我试图学习一些基本的JDBC。

  • 我创建了一个JavaDB服务器并创建了一个Java程序,我可以阅读 并改变数据库中的一些表格。
  • 我认为能够连接到这个网站是一个有趣的下一步 服务器来自另一台运行在同一网络上的计算机,甚至是 来自互联网,如果它是相似的。
  • 到目前为止,我刚尝试在另一台计算机上打开项目,看看是否 它将连接到localhost,但预计它也会 容易...

当前的数据库名称为" jdbc:derby:// localhost:1527 / test; user = db; password = db"

  1. 我可以用我的ipv4地址替换localhost来连接 本地?或
  2. 我真的需要路由器的IP并进行一些端口转发吗?
  3. 本地连接是我真正需要的。如果这更容易,那就是我想做的事情。

4 个答案:

答案 0 :(得分:0)

您需要使用要连接的框的主机名或IP:

URI:jdbc:derby://<hostname_or_ip>:1527/test;user=db;password=db

<hostname_or_ip>替换为真实值,您就可以了。

答案 1 :(得分:0)

您需要在路由器上打开端口1527。 你可以尝试这个答案 https://stackoverflow.com/a/12176840/2746009

答案 2 :(得分:0)

因此,我建议您查看防火墙设置,如果防火墙没有阻止,或者您可以尝试与另一个端口进行通信。如果这两件事都不起作用,请告诉我,在吐出这个错误之前需要多长时间。此外,在命令提示符下,尝试ping machineIP并查看它是否正在发送和接收数据

答案 3 :(得分:0)

我进行了相同的配置,花了几个小时后才找到解决方案: http://db.apache.org/derby/docs/10.2/adminguide/derbyadmin.pdf

第34页:

  

默认情况下,Derby Network Server仅在本地主机(...)上侦听

一种解决方案是创建具有以下内容的[derby.properties]文件:    derby.drda.host = 0.0.0.0

保存属性文件的位置可能有所不同:

-对我来说在一台机器上,它直接位于“ javadb”下,“ bin”,“ lib”等的同级下

-在第二台计算机上,它位于“ bin”目录下,*。bat文件同级。

要验证是否正在读取您的属性(起初它不存在,Derby doc明确告知它不会为您创建它),请添加此属性:    derby.stream.error.file = derbyNewLog.log

如果执行    bin / startNetworkServer 如果正确读取您的属性,它将创建新的日志文件。

在确认正在读取新的属性文件之后,可以使用bin / ij工具对数据库(本地和远程)执行connect语句。这就是我可以快速验证的方式(我的数据库名称是'differentRequestsAndPerformance'):

c:\glassfish4\javadb\bin>ij
ij version 10.10
ij> connect 'jdbc:derby://localhost:1527/differentRequestsAndPerformance';
ij> show tables;
TABLE_SCHEM         |TABLE_NAME                    |REMARKS
------------------------------------------------------------------------
SYS                 |SYSALIASES                    |
(...)
ij> disconnect;
  >> this 'connect' with localhost is expected to work always - you can append ';create=true' to the DB name in case it doesn't exist already; now change it to your remote ip (I'm assuming you previously confirmed with 'ping' command that you actually can see the server remote machine, otherwise it's a network problem, not a Derby problem)

ij> connect 'jdbc:derby://192.168.1.14:1527/differentRequestsAndPerformance';
ij> show tables;
TABLE_SCHEM         |TABLE_NAME                    |REMARKS
------------------------------------------------------------------------
SYS                 |SYSALIASES                    |
(...)
ij> disconnect;

另外一条评论:我不确定0.0.0.0设置会将您的计算机打开到恶意软件的位置,因为我只想验证我的代码,并在满意后立即禁用它。如果您想将此用于实际程序,则需要对此进行更多研究。

如果您的“ ij”工具抱怨某些驱动程序,请将javadb / lib目录添加到CLASSPATH系统变量。

另一件事(显而易见,但比保证更好的安全):必须在远程数据库(您的请求将到达的地方)上进行此配置,以防像我这样有两台同时运行数据库的计算机。