我正在尝试重做遗留应用程序......
我已下载并安装: FirebirdCS-2.5.7-27050-x86_64.pkg
我已经设置了以下内容: 导出FIREBIRD_HOME = / Library / Frameworks / Firebird.framework / Resources export PATH = $ PATH:$ FIREBIRD_HOME / bin
我使用以下方法测试安装:
$ isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> quit;
我可以使用isql连接数据库,我可以显示表格并从中选择数据:
$ isql -user sysdba -password masterkey
Use CONNECT or CREATE DATABASE to specify a database
SQL> connect employee;
Database: employee, User: sysdba
SQL> show tables;
COUNTRY CUSTOMER
DEPARTMENT EMPLOYEE
EMPLOYEE_PROJECT JOB
PROJECT PROJ_DEPT_BUDGET
SALARY_HISTORY SALES
SQL> quit;
我也可以使用gbak备份表,所以看起来Firebird的安装很好。
但是当我尝试使用 Java 连接到员工数据库时,出现以下错误消息时出现异常:
org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544421. connection rejected by remote interface
Java代码:
try
{
Class.forName("org.firebirdsql.jdbc.FBDriver");
connection = DriverManager.getConnection("jdbc:firebirdsql:localhost:3050//Library/Frameworks/Firebird.framework/Resources/examples/empbuild/employee.fdb", "sysdba", "masterkey");
}
catch (Exception e)
{
e.printStackTrace();
}
我在“连接字符串”上尝试了很多变体,它们都会产生错误,因此不问题。
我正在使用以下jar:
**jaybird-full-2.1.6.jar**
我正在使用Eclipse Helios,Java 1.6,我在Mac上使用OSX。
jar是错误的版本吗?
还有什么呢?
欢迎任何想法。
答案 0 :(得分:1)
问题是您的JDBC URL无效,因为您正在以一种不起作用的方式组合Jaybird URL的两个不兼容的语法。正确的URL是:
"jdbc:firebirdsql://localhost:3050//Library/Frameworks/Firebird.framework/Resources/examples/empbuild/employee.fdb"
请注意,这可能仍会失败,因为Firebird配置中不允许使用此路径进行连接。
使用您问题中的URL,您实际上是在尝试连接到相对路径3050//Library/Frameworks/Firebird.framework/Resources/examples/empbuild/employee.fdb
上的数据库(相对于Firebird安装或其他一些与配置相关的位置)。
您可以使用来自ISQL的connect employee
这一事实,建议您可以使用带别名的连接URL:
"jdbc:firebirdsql://localhost:3050/employee"
或甚至更短(因为端口3050是默认值):
"jdbc:firebirdsql://localhost/employee"
另见JDBC URLs in the Jaybird FAQ。
我强烈建议您使用别名(如上所述使用employee
)连接到您的数据库,并将您的真实数据库放在/Library/Frameworks
文件夹之外。
你真的需要更新你的Jaybird版本,Jaybird 2.1.6已经9岁了。最新版本是3.0.2,或者 - 如果您遇到Java 6 - 2.2.13,请参阅JDBC driver downloads on firebirdsql.org。
披露:我是Jaybird的开发者之一。
答案 1 :(得分:0)
在Windows防火墙上解锁端口3050。