我试图学习一些基本的JDBC。
当前的数据库名称为" jdbc:derby:// localhost:1527 / test; user = db; password = db" 。
本地连接是我真正需要的。如果这更容易,那就是我想做的事情。
答案 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系统变量。
另一件事(显而易见,但比保证更好的安全):必须在远程数据库(您的请求将到达的地方)上进行此配置,以防像我这样有两台同时运行数据库的计算机。