环境准备
java1.6以上版本
hana jdbc jar包
通过cmd连接hana
在hana jdbc jar包所在目录执行,其中-u 数据库账号,密码,-n IP:端口 ,-c 操作语句
端口:3 + instance number + 15
示例:
d:\Program Files\sap\hdbclient>java -jar ngdbc.jar -u SYSTEM,password -n 172.23.1.123:39015 -c "SELECT DATABASE_NAME FROM SYS.M_DATABASES"
studio连接hana
host name:IP
其安装方法之类百度一大把
JDBC连接
项目中导入所需jar包
示例1
package hanatest;
import java.sql.*;
public class hana1 {
public static String connectionString = "jdbc:sap://172.23.1.123:39015";
public static String user = "SYSTEM";
public static String password = "password";
public static void main(String[] argv) {
Connection connection = null;
try {
connection = DriverManager.getConnection(connectionString, user, password);
} catch (SQLException e) {
System.err.println("Connection Failed. User/Passwd Error? Message: " + e.getMessage());
return;
}
if (connection != null) {
try {
System.out.println("Connection to HANA successful!");
Statement stmt = connection.createStatement();
ResultSet resultSet = stmt.executeQuery("select 'hello world' from dummy");
resultSet.next();
String hello = resultSet.getString(1);
System.out.println(hello);
} catch (SQLException e) {
System.err.println("Query failed!");
}
}
}
}
示例2
package hanatest;
import java.sql.*;
/**
* JDBC Sample.
*/
public class JDBCDemoHANA {
private static final String DRIVER = "com.sap.db.jdbc.Driver";
private static final String URL = "jdbc:sap://172.23.1.123:39015?reconnect=true";
public JDBCDemoHANA() {
}
public static void main(String[] args) {
JDBCDemoHANA demo = new JDBCDemoHANA();
try {
demo.select();
} catch (Exception e) {
e.printStackTrace();
}
}
public void select() throws Exception {
Connection con = this.getConnection(DRIVER, URL, "SYSTEM","password");
PreparedStatement pstmt = con.prepareStatement("select USER_ID,USER_NAME,USER_MODE from SYS.USERS");
ResultSet rs = pstmt.executeQuery();
this.processResult(rs);
this.closeConnection(con, pstmt);
}
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();
}
}
}