2

我正在从我的笔记本电脑上运行一个小型 JAVA 程序,试图通过 JDBC 连接到我们的 HANA 服务器以获得“我们可以吗?” 原型。

我知道可以通过 JDBC 连接连接到远程 HANA 服务器。但是,我不能。这是我使用 sapdbc.jar 文件从 JAVA 中使用的方法。我只是在这里测试连接。

    DataSourceSapDB ds = new DataSourceSapDB();
    ds.setServerName("10.x.x.xxx");
    ds.setPort(30015);
    ds.setDatabaseName("dbNAME");
    ds.setUser("myUser");
    ds.setPassword("myPassword");
    Connection c = ds.getConnection();

    if (c == null) return;  

该实例为 00,但如果需要,则看不到将其包含在连接字符串中的何处。我已经仔细检查了所有属性。

我们的 HANA 服务器由另一家公司托管,尽管访问它是在我们的网络内。这可能是一个原因吗?

感谢您的帮助。

我得到的连接错误是:

com.sap.dbtech.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: Cannot connect to jdbc:sapdb://10.x.x.xxxx:30015/dbNAME [Connect reply receive failed [Connection reset].].
    at com.sap.dbtech.jdbc.DriverSapDB.connect(DriverSapDB.java:178)
    at com.sap.dbtech.jdbcext.DataSourceSapDBBase.openPhysicalConnection(DataSourceSapDBBase.java:374)
    at com.sap.dbtech.jdbcext.DataSourceSapDB.getConnection(DataSourceSapDB.java:49)
    at com.glazers.hana.utils.HanaStoredProcedure.execute(HanaStoredProcedure.java:37)
    at com.glazers.hana.utils.HanaStoredProcedure.main(HanaStoredProcedure.java:24)
4

2 回答 2

9

我使用了不正确的 SAP jar。当我需要 HANA 客户端 jar (ngdbc.jar) 时,我正在使用 sapdbc.jar。在 jar 和驱动程序切换之后,这一切都连接了。

try {
    Class.forName("com.sap.db.jdbc.Driver");

    String url = "jdbc:sap://xx.x.x.xxx:30015/?databaseName=DBNAME";
    String user = "user";
    String password = "password";

    Connection cn = java.sql.DriverManager.getConnection(url, user, password);

    ResultSet rs = cn.createStatement().executeQuery("CALL MY_SCHEMA.STORED_PROC");

    // ... do whatever with the results ...

} catch (Exception e) {
    e.printStackTrace();
}
于 2013-10-23T20:04:09.323 回答
3

是的,你是对的,你需要使用 ngdbc.jar 来建立连接。

实例号包含在端口号中。您正在连接的。

例如,如果您的端口号。是 30015,那么 00 是实例。

希望这可以帮助。

于 2014-05-01T06:53:39.733 回答