找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
SAP亦橙网 首页 SAP技术 查看内容

Java连接SAP HANA

2023-12-22 15:51| 发布者: 亦书| 查看: 29| 评论: 0

摘要: Java连接SAP HANASAP HANA提供了jdbc的连接方式添加依赖的jar包ngdbc.jarMaven配置dependency groupIdcom.sap.cloud.db.jdbc/groupId artifactIdngdbc/artifactId version2.3.48/version /dependency需要获取的配置 ...
Java连接SAP HANA

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

 

特别声明:文章或部分素材来源于网络,仅供SAPERP从业伙伴们交流学习使用,如果侵犯了您的权益,请联系网站管理人员删减!


路过

雷人

握手

鲜花

鸡蛋
上一篇:SAP开发入门-ABAP下一篇:SAP PA认证
返回顶部