报错如下信息

com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: Cannot connect to jdbc:sap://xxx.xxx.xxx.xxx:30015 [Cannot connect to host xxx.xxx.xxx.xxx:30015 [Connection refused: connect], -813.].

应该优先考虑端口号问题。

在SAP HANA STUDIO中使用30015端口没问题,但为什么到了JDBC这里又有问题了呢?

原来该链接为Multiple container,不同的container有不同的端口,这时候应该问数据库管理员要正确的端口。

最终正确的端口为30059,可能是人为或者是机器设置的。

另外,使用JDBC的时候,应去掉pom部分的xml,如下:

<dependency>
            <groupId>com.sap.cloud.db.jdbc</groupId>
            <artifactId>ngdbc</artifactId>
            <version>2.4.63</version>
            <!--<type>pom</type>-->
</dependency>

而且,虽然group id写着com.sap.cloud.db.jdbc,但实际java使用的时候,还是得这么导入,估计是因为一些历史遗留的命名问题:

Class.forName("com.sap.db.jdbc.Driver");  // 必须使用老的包路径。使用新的com.sap.cloud.db.jdbc会报错

参考:Step 8: The port number

里边详细写了不同container模式下的端口号。如果参照SAP官方教程不行,那么就得问DB管理员具体自定义的端口号是多少了。

multiple container:不光是db里的数据,还有外部应用,都可以放在container里边。一个数据库可以有多个container的概念,方便系统升级。

10-22 00:25