SAP Hana 数据库编程接口 - JDBC

版权声明:本文为博主原创文章,转载请注明出处:http://blog.csdn.net/stone0823 https://blog.csdn.net/stone0823/article/details/78938920

Hana JDBC 驱动

安装 SAP HANA Client 后,安装目录的 ngdbc.jar 就是 JDBC 数据库驱动。主要注意 url 的写法和 Driver 的名称 :

  • Driver: com.sap.db.jdbc.Driver
  • url: jdbc:sap://ip_addr:30015
  • 端口:3 + instance number + 15

代码示例

因为和其他数据库并没有区别,这里直接贴上代码。

实体类

package stone.hanatest;

public class EmployeeEntity {
    public String EmpId;
    public String Gender;
    public int Age;
    public String EMail;
    public String PhoneNr;
    public String Education;
    public String MaritalStat;
    public int NrOfChildren;
}

CRUD 代码

package stone.hanatest;

import java.sql.*;

public class HanaCRUD {
    private static final String DRIVER = "com.sap.db.jdbc.Driver";
    private static final String URL = "jdbc:sap://192.168.2.100:30015?reconnect=true";
    private String user = "STONE";
    private String pwd = "hanapwd";

    public Connection getConnection(String userid, String pwd) 
            throws ClassNotFoundException, SQLException{

        Class.forName(DRIVER);
        return DriverManager.getConnection(URL, userid, pwd);       
    }

    public void release(Connection conn, Statement stmt) throws SQLException{
        if (stmt != null){
            stmt.close();
        }

        if (conn != null){
            conn.close();
        }
    }

    public void printEmployees() throws ClassNotFoundException, SQLException{
        Connection conn = this.getConnection(user, pwd);
        String sql = "SELECT * FROM STONE.EMP_MASTER";
        PreparedStatement pStmt = conn.prepareStatement(sql);

        ResultSet rst = pStmt.executeQuery();

        while(rst.next()){
            System.out.print(rst.getString("EMP_ID") + "|");
            System.out.print(rst.getString("GENDER") + "|");
            System.out.print(rst.getString("EMAIL"));       

            // new line
            System.out.println();
        }   

        this.release(conn, pStmt);
    }

    public int insertEmployee(EmployeeEntity emp) 
            throws ClassNotFoundException, SQLException{

        Connection conn = this.getConnection(user, pwd);
        String sql = "INSERT INTO STONE.EMP_MASTER VALUES (?,?,?,?,?,?,?,?)";
        PreparedStatement pStmt = conn.prepareStatement(sql);

        pStmt.setString(1, emp.EmpId); // starts from 1 instead of 0
        pStmt.setString(2, emp.Gender);
        pStmt.setInt(3, emp.Age);
        pStmt.setString(4, emp.EMail);
        pStmt.setString(5, emp.PhoneNr);
        pStmt.setString(6, emp.Education);
        pStmt.setString(7, emp.MaritalStat);
        pStmt.setInt(8, emp.NrOfChildren);

        int count = pStmt.executeUpdate();

        this.release(conn, pStmt);

        return count;       
    }

    public int deleteEmployee(String empId) 
            throws ClassNotFoundException, SQLException{

        Connection conn = this.getConnection(user, pwd);
        String sql = "DELETE FROM STONE.EMP_MASTER WHERE EMP_ID=? ";
        PreparedStatement pStmt =  conn.prepareStatement(sql);

        pStmt.setString(1, empId);
        int count = pStmt.executeUpdate();

        this.release(conn, pStmt);

        return count;
    }
}

猜你喜欢

转载自blog.csdn.net/stone0823/article/details/78938920