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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从另一台计算机连接到JavaDB?相关的知识,希望对你有一定的参考价值。

我正在尝试学习一些基本的JDBC。

  • 我已经创建了一个JavaDB服务器并创建了一个Java程序,我可以在其中读取和更改数据库中的某些表。
  • 我认为能够从运行在同一网络上的另一台计算机连接到服务器是一个有趣的下一步,如果它是相似的,甚至可以从互联网连接到服务器。
  • 到目前为止,我刚尝试在另一台计算机上打开项目,看看它是否会连接到本地主机,但预计它会太容易了...

当前的db名称是“jdbc:derby:// localhost:1527 / test; user = db; password = db”。

  1. 我可以用我的ipv4地址替换localhost来连接本地吗?要么
  2. 我真的需要路由器的IP并进行一些端口转发吗?

本地连接是我真正需要的。如果这更容易,那就是我想做的。

答案

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

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

<hostname_or_ip>替换为真正的价值,你很高兴。

另一答案

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

另一答案

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

另一答案

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

第34页:

默认情况下,Derby Network Server将仅侦听localhost(...)

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

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

- 在我的一台机器上直接在'javadb','bin','lib'等兄弟

- 在我的第二台机器上,它位于'bin'目录下,是* .bat文件的兄弟。

要验证您的属性是否正在被读取(它最初不存在,Derby doc明确告诉它不会为您创建它),也是要添加此属性:derby.stream.error.file = derbyNewLog。日志

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

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

c:glassfish4javadbin>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系统变量中。

另一件事(显而易见但安全性比抱歉更好):此配置必须设置在远程数据库(您的请求将到达),如果像我一样,您有2台机器都在运行数据库。

以上是关于如何从另一台计算机连接到JavaDB?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 odbc_connect() 从另一台计算机连接到 Microsoft Access 数据库?

为啥我无法从另一台计算机连接到 openfire 服务器?

从另一台计算机连接到在 Amazon EC2 上的 localhost 上运行的 Web 应用程序

无法从另一台机器连接到 Geth 节点 RPC

从另一台服务器连接到 aws 服务器上的 MongoDB

如何连接到本地 MySQL 数据库 [重复]