Java 使用Jaybird连接到位于本地网络计算机中的Firebird数据库
我正在创建一个java应用程序,它连接到Firebird数据库并检索一些数据。程序已经完成,并且在我的计算机上运行良好。问题是,在我需要运行应用程序的计算机中,数据库位于本地网络中的另一台计算机中,我不知道应该将哪个路径放入jaybird的连接字符串中以使其运行。让我解释一下: 我需要在计算机X中运行我的应用程序,但实际的数据库不在计算机的驱动器中,而是在本地网络中的计算机中。类似这样的东西(这是一个例子,它在我家复制,而不是在我需要让它工作的实际站点): 因此,它为数据库提供的路径类似于:Java 使用Jaybird连接到位于本地网络计算机中的Firebird数据库,java,firebird,firebird2.5,jaybird,Java,Firebird,Firebird2.5,Jaybird,我正在创建一个java应用程序,它连接到Firebird数据库并检索一些数据。程序已经完成,并且在我的计算机上运行良好。问题是,在我需要运行应用程序的计算机中,数据库位于本地网络中的另一台计算机中,我不知道应该将哪个路径放入jaybird的连接字符串中以使其运行。让我解释一下: 我需要在计算机X中运行我的应用程序,但实际的数据库不在计算机的驱动器中,而是在本地网络中的计算机中。类似这样的东西(这是一个例子,它在我家复制,而不是在我需要让它工作的实际站点): 因此,它为数据库提供的路径类似于:
static final String FB_DB_URL = "jdbc:firebirdsql://192.168.0.101:3050/\\\\DESKTOP-1UFA09I\\Documents\\TEST1.FDB";
我知道如果我的数据库在我的驱动器中(例如,在C:\Users\john\Desktop中),我使用Jaybird与数据库的连接应该是这样的:
static final String FB_DB_URL = "jdbc:firebirdsql://localhost:3050/C:\\Users\\john\\Desktop\\TEST1.FDB";
FB_connection = DriverManager.getConnection( FB_DB_URL , FB_USER , FB_PASS);
事实上,这就是我如何使它在我的电脑中工作的方法。但在这种情况下,我不知道路径应该是什么。我试过这样的方法:
static final String FB_DB_URL = "jdbc:firebirdsql://192.168.0.101:3050/\\\\DESKTOP-1UFA09I\\Documents\\TEST1.FDB";
“192.168.0.101”是数据库所在计算机的ipv4地址。但这给了我一个例外,应用程序无法找到数据库。我想这是我最接近找到解决办法的时候了,但我没有运气。
一些额外信息:
- 这两台计算机都关闭了防火墙,可以相互发送ping,因此它们实际上是连接在一起的
- 我正在使用Firebird 2.5和jaybird 2.2.1
- 我还尝试了以下方法,但没有成功:
static final String FB_DB_URL = "jdbc:firebirdsql://192.168.0.101:3050/C:\\users\\john2\\Documents\\TEST1.FDB";
- 该文件夹是共享的(或者至少我是这么认为的),因为我可以通过windows访问它,数据库文件为每个人提供读/写权限
- 我确信Firebird在这两台电脑上都运行
"jdbc:firebirdsql://192.168.0.101:3050/C:\\folder1\\folder2\\TEST1.FDB";
发生异常的原因显然是,jaybird与服务器中的
users
文件夹存在一些权限问题。由于my DB位于documents
文件夹中,因此当jaybird试图访问它时,它会导致一些问题。解决方案是将数据库移动到C://
中的另一个文件夹。要连接到远程数据库,您需要了解以下事项:
- Firebird服务器的主机名或IP地址
- Firebird服务器的端口号(默认为3050)
- 用户名和密码
- 数据库的别名或数据库的完整路径
jdbc:firebirdsql://192.168.0.101:3050/C:\\users\\john2\\Documents\\TEST1.FDB
但是,出于安全原因,默认情况下运行Firebird服务器进程的用户无权访问用户文件夹
我建议您将数据库移动到用户文件夹之外的位置,并确保运行Firebird服务器服务的帐户具有读写访问权限(网络服务或本地系统,我忘记了,我目前没有访问Windows计算机的权限)
其他说明:
- Firebird数据库的位置不应共享,因为远程访问数据库应通过Firebird服务器完成
- 您应该真正更新到Jaybird 2.2.11;2.2.1已使用了将近4年,自那时起,许多已被修复 <>如果你真的使用火鸟2.5(0),那么升级到2.5.6,或者考虑升级到3
192.168.0.101:3050
,则必须确保服务器在另一台具有IP192.168.0.101
的机器上运行。由于服务器已经在另一台计算机上,因此需要为其提供该计算机上数据库名称的本地名称,如中所示
static final String FB_DB_URL = "jdbc:firebirdsql://192.168.0.101:3050/C:\\users\\john2\\Documents\\TEST1.FDB";
要不使用IP,您需要给该机器一个可以在本地网络中通过DNS解析的名称,这并不困难,在主机
名称中输入就足够了。端口3050实际上是默认端口,因此可以忽略它
由于这不起作用,我猜服务器没有在目标机器上运行,只有数据库文件在那里。在这种情况下,您应该连接到本地服务器,但要让它知道网络可访问的数据库文件名,如中所示
static final String FB_DB_URL = "jdbc:firebirdsql://localhost/\\\\DESKTOP-1UFA09I\\Documents\\TEST1.FDB";
它应该允许本地Firebird服务器通过本地网络打开
\\DESKTOP-1UFA09I\Documents\TEST1.FDB
文件-当然,如果网络共享DESKTOP-1UFA09I
指向正确的位置和帐户,本地Firebird服务器在另一台机器上有足够的访问权限。使用\\DESKTOP-1UFA09I\Documents\TEST1.FDB无法工作,因为Firebird不会通过网络共享打开数据库,只能通过本地磁盘打开数据库。如果目标服务上没有运行数据库,则会导致另一个错误。答案是正确的,但最终问题出在数据库的实际位置。它位于服务器的用户文件夹中,显然jaybird没有访问该文件夹的权限folder@angel208杰伯德就是天秤座的人