SAP HANA提供了jdbc的连接方式
添加依赖的jar包
ngdbc.jar
Maven配置
<dependency>
<groupId>com.sap.cloud.db.jdbc</groupId>
<artifactId>ngdbc</artifactId>
<version>2.3.48</version>
</dependency>
需要获取的配置信息
IP : 192.168.10.64
port : 32015
currentschema : SYS_BIC
用户名:user
密码:password
示例代码
package XXX.hana;
import org.springframework.stereotype.Component;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Component
public class NgOrder {
private static final String DRIVER = "com.sap.db.jdbc.Driver";
private static final String URL = "jdbc:sap://10.100.222.125:32015?currentschema=_SYS_BIC";
private List<NG> results = null;
public Map<String, Object> test() {
Map<String, Object> map = new HashMap<>();
try {
map.put("data", this.select());
} catch (Exception e) {
map.put("error", e.getMessage());
e.printStackTrace();
}
return map;
}
public List<NG> select() throws Exception {
Connection con = this.getConnection(DRIVER, URL, "SPW_RFC", "1qaz@WSX#EDC");
if(null != con) {
System.out.println("数据库连接成功");
}
PreparedStatement pstmt = con.prepareStatement("SELECT QMNUM,QMTXT,TPLNR,AUFNR,QMART FROM \"package1.package2.package2/modelView\"");
System.out.println("PreparedStatement连接成功 ------- ");
ResultSet rs = pstmt.executeQuery();
System.out.println("ResultSet连接成功 ------- ");
results = this.processResult(rs);
System.out.println("数据解析完毕 ------- ");
this.closeConnection(con, pstmt);
return results;
}
private List<NG> processResult(ResultSet rs) throws Exception {
results = new ArrayList<>();
int index = 0;
if (rs.next()) {
ResultSetMetaData rsmd = rs.getMetaData();
int colNum = rsmd.getColumnCount();
// 查看列名
for (int i = 1; i <= colNum; i++) {
if (i == 1) {
System.out.print(rsmd.getColumnName(i));
} else {
System.out.print("\t" + rsmd.getColumnName(i));
}
}
System.out.print("\n");
System.out.println("-----------------------");
// 取数据
do {
// NG为自己创建的实体类
final NG ng = new NG();
int i = 1;
ng.setQmnum(rs.getString(i++));
ng.setQmtxt(rs.getString(i++));
ng.setTplnr(rs.getString(i++));
ng.setAufnr(rs.getString(i++));
ng.setQmart(rs.getString(i++));
results.add(ng);
index++;
} while (rs.next() && index < 20); // 只取前20行数据
} else {
System.out.println("query not result.");
}
return results;
}
private Connection getConnection(String driver, String url, String user,
String password) throws Exception {
Class.forName(driver);
return DriverManager.getConnection(url, user, password);
}
private void closeConnection(Connection con, Statement stmt)
throws Exception {
if (stmt != null) {
stmt.close();
}
if (con != null) {
con.close();
}
}
}
特别注意
PreparedStatement pstmt = con.prepareStatement("SELECT QMNUM,QMTXT,TPLNR,AUFNR,QMART FROM \"package1.package2.package2/modelView\"");
这一行代码中,from后面跟着的包名和模型名称必须在“”内部,不然会报错:
com.sap.db.jdbc.exceptions: SAP DBTech JDBC:257 sql syntax error database name not allowed in single-container mode
特别声明:文章或部分素材来源于网络,仅供SAP、ERP从业伙伴们交流学习使用,如果侵犯了您的权益,请联系网站管理人员删减!