我正在尝试连接在Google Cloud Platform中运行的HANA数据库。这是我的java代码,
try {
Class.forName("com.sap.db.jdbc.Driver");
String url = "jdbc:sap://myhost:39015/?";
String user = "MYUSER";
String password = "PASSWORD";
System.out.println("Connecting to HANA..!");
Connection cn = DriverManager.getConnection(url, user, password);
System.out.println("Connection to HANA successful!");
ResultSet rs = cn.createStatement().executeQuery("select * from \"TWEETS\"");
rs.next();
System.out.println(rs.getString(1));
} catch (Exception e) {
e.printStackTrace();
}
TWEETS
架构下存在SYSTEM
表,我可以使用HANA sudio(Eclipse插件)查询TWEETS
表。但是,当我尝试从java代码查询时,会发生以下异常。
com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: [259] (at 14): invalid table name: Could not find table/view TWEETS in schema SYSTEM: line 1 col 15 (at pos 14)
at com.sap.db.jdbc.exceptions.SQLExceptionSapDB.createException(SQLExceptionSapDB.java:334)
at com.sap.db.jdbc.exceptions.SQLExceptionSapDB.generateDatabaseException(SQLExceptionSapDB.java:165)
at com.sap.db.jdbc.packet.ReplyPacket.buildExceptionChain(ReplyPacket.java:104)
at com.sap.db.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:1110)
at com.sap.db.jdbc.ConnectionSapDB.execute(ConnectionSapDB.java:854)
at com.sap.db.jdbc.StatementSapDB.sendCommand(StatementSapDB.java:925)
注意:我也试过以下组合,但没有运气!
1. "select * from TWEETS"
2. "select * from SYSTEM.TWEETS"
3. "select * from \"TWEETS\"
4. "select * from \"SYSTEM\".\"TWEETS\""
表创建命令,
CREATE COLUMN TABLE TWEETS(
"ID" INTEGER NOT NULL,
"USER_NAME" NVARCHAR(100),
"CREATED_AT" DATE,
"TEXT" NVARCHAR (140),
"HASH_TAGS" NVARCHAR (100),
PRIMARY KEY("ID")
);
你能帮我解决一下这个问题吗? 谢谢!
答案 0 :(得分:0)
根据提供的文档here,我们可以发现您在SAP JDBC连接字符串中使用的端口存在问题。
端口应为3<实例编号> 15;例如,30015,如果实例为00。
通过上述说明,对连接字符串进行必要的更改可以解决问题。
已更正的连接字符串现在如下(基于问题中提供的参数):
String url = "jdbc:sap://myhost:30015/?databaseName=TWEETS&user=MYUSER&password=PASSWORD";
希望这有帮助!
答案 1 :(得分:0)
试
"select * from SYSTEM.\"TWEETS\""