Java连接HANA数据库

package hs.hsapp.util;

import java.sql.*;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

public class HanaJdbc {

private static final String DRIVER = "com.sap.db.jdbc.Driver"; //jdbc 4.0

private static final String URL = "jdbc:sap://IP:30041?reconnect=true";

复制代码
public List<Map<Object, Object>> select(String sql) {
    List<Map<Object, Object>> list = new ArrayList<>();
    try{
        Connection con = this.getConnection(DRIVER, URL, "USR", "PWD");
        PreparedStatement pstmt = con.prepareStatement(sql);
        ResultSet rs = pstmt.executeQuery();
        //this.processResult(rs);
        ResultSetMetaData rsmd = rs.getMetaData();
        int colNum = rsmd.getColumnCount();
        while (rs.next()) {
            Map<Object,Object> map = new HashMap<>();
            for(int i = 1; i <= colNum; i++) {
                //System.out.println("col: " + rsmd.getColumnName(i) + ",val: " + rs.getObject(i));
                map.put(rsmd.getColumnName(i),rs.getObject(i));
            }
            list.add(map);
        }
        this.closeConnection(con, pstmt);
    }catch (Exception ex) {
        ex.printStackTrace();
    }
    return list;
}

private void processResult(ResultSet rs) throws Exception {
    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 {
            for (int i = 1; i <= colNum; i++) {
                if (i == 1) {
                    System.out.print(rs.getString(i));
                } else {
                    System.out.print("\t"
                            + (rs.getString(i) == null ? "null" : rs
                            .getString(i).trim()));
                }

            }
            System.out.print("\n");
        } while (rs.next());
    } else {
        System.out.println("query not result.");
    }

}

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();
    }
}

}

相关推荐
xiaoqiMikko4 分钟前
七条 advisory 各给了一个修复版,而一次修完的那个数字一条都没写
java·spring boot
vHelios5 分钟前
【电商项目】短信测试遇到的问题与解决方案:InaccessibleObjectException报错、单元测试通过但未接收到验证码
java·微服务
盟道科技9 分钟前
小程序电商订单超时自动取消的三种实现方案:定时扫描、Redis 过期监听、延迟消息对比与生产落地
数据库·redis·小程序
气泡水好喝9 分钟前
Java魔法探秘:从Java代码到CPU指令,一个方法调用的完整生命周期
java
暖焰核心10 分钟前
迭代器与模板的结合——stl的list
c++·windows·list
气泡水好喝15 分钟前
读《阿里巴巴Java开发手册》五年,这7条规约救了我太多次
java
剑锋所指,所向披靡!15 分钟前
MySQL存储引擎
数据库·mysql
凯哥Java17 分钟前
System.setProperty 的正确姿势:Spring Boot 启动类里的“缺省值“魔法
java·spring boot·后端
reasonsummer19 分钟前
【办公类-146-05】20260901《一分园、二分园四大教育》(优化版:标题excle+复制AI文字+Python占位符录入)
开发语言·数据库·c#
lhldsg20 分钟前
智慧场馆解决方案小程序系统:从架构设计到落地实践
java·小程序·需求分析