5

我使用 java 和 jaybird 驱动程序。在我之前的 jaybird 2.x 版本中,我使用 GDS 低级访问(服务 API)来连接服务器(没有连接 db-part),以获取服务器版本字符串。

现在我尝试使用 FB3 + jaybird3beta。JB3 中没有 GDS API。正如我从文档中看到的那样 - 有 org.firebirdsql.util.FirebirdSupportInfo 对象具有 3 个实现

static FirebirdSupportInfo  supportInfoFor(Connection connection) 
static FirebirdSupportInfo  supportInfoFor(FbDatabase database) 
static FirebirdSupportInfo  supportInfoFor(GDSServerVersion serverVersion) 

如我所见:

  • GDSServerVersion - 代表 Firebird 服务器版本的对象(已经以某种方式获得)。
  • FbDatabase - 到数据库的连接句柄。
  • 连接 - 某种“连接”。所以挖北斗:

还有带有 getConnection() 函数的 java.sql.DriverManager “尝试建立到给定数据库 URL的连接”

那么,据我了解,如果没有连接到任何数据库,它就无法获取服务器版本?还是我错过了什么?

或者如何仅使用 server:port 和给定的用户名/密码来获取服务器版本?

4

1 回答 1

2

与此答案的早期版本相反,它已经是可能的(我已经忘记了)。要获取服务器版本,您可以使用org.firebirdsql.management.FBServiceManager该类:

FBServiceManager manager = new FBServiceManager();
manager.setHost("localhost");
manager.setUser("sysdba");
manager.setPassword("your password");
System.out.println(manager.getServerVersion());

此方法目前未在接口定义中公开ServiceManager,我已为 Jaybird 3.0.0 final创建了票证JDBC-484来解决此问题。

顺便说一句:编写该类org.firebirdsql.util.FirebirdSupportInfo主要是为了简化 Jaybird 本身的测试,这些测试依赖于不同 Firebird 版本中引入的功能。我们将它包含在分发包中,因为它可能对其他人有用。请记住,功能检查方法的结果并不一定意味着特定数据库可以使用此类功能,因为有时功能还需要数据库文件的特定 ODS(磁盘结构)版本。

披露:我是 Jaybird 的开发人员。

于 2017-03-17T15:48:52.120 回答