JDBC连接hana JAVA API
JDBC连接hana JAVA API
work中需要将kafka topic中的数据sync到hana表中,事先做了一个了解hana语法和代码的demo,后续介绍kafka connector的使用 和 hana语法的简单使用
package com.xxx;
import java.sql.*;
public class JDBCDemoHANA {
private static final String DRIVER = "com.sap.db.jdbc.Driver";
private static final String URL = "jdbc:sap://10.xx.2.1xx:30515?currentschema=xxx";
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, "username","password");
//返回当前会话的用户名。
PreparedStatement pstmt1 = con.prepareStatement("SELECT CURRENT_USER FROM DUMMY;");
this.closeStatement(pstmt1);
PreparedStatement pstmt2 = con.prepareStatement("SELECT SESSION_USER FROM DUMMY");
this.closeStatement(pstmt2);
//返回当前schema
PreparedStatement pstmt3 = con.prepareStatement("SELECT CURRENT_SCHEMA FROM DUMMY");
this.closeStatement(pstmt3);
//创建hana表
PreparedStatement pstmt4 = con.prepareStatement("CREATE TABLE schemaName.TEST_CUSTOMER\n" +
"(\n" +
"\tID INTEGER NOT NULL PRIMARY KEY,\n" +
"\tNAME NVARCHAR(50),\n" +
"\tZIP NVARCHAR(20),\n" +
"\tADDRESS NVARCHAR(100),\n" +
"\tTELEPHONE NVARCHAR(20)\n" +
")");
//插入数据
PreparedStatement pstmt5 = con.prepareStatement("INSERT INTO schemaName.TEST_CUSTOMER VALUES (1001,'Hugh Jackman','10086','北京市朝阳区新源西里中街','65890001')");
// closeStatement(pstmt5);
//查询数据
PreparedStatement pstmt6 = con.prepareStatement("SELECT * FROM schemaName.TEST_CUSTOMER");
//insertOrUpdate数据 UPSERT T VALUES (1, 9) WHERE KEY = 1;
PreparedStatement pstmt7= con.prepareStatement("upsert schemaName.TEST_CUSTOMER values (1001,'Hugh Jackman','10076','北京市朝阳区新源西里中街','65890002') where id=1001");
// this.closeStatement(pstmt7);
PreparedStatement pstmt8= con.prepareStatement("upsert schemaName.TEST_CUSTOMER values (1002,'Hugh gao','10086','北京市朝阳区街','65890001') where id=1002");
// this.closeStatement(pstmt8);
PreparedStatement pstmt9= con.prepareStatement("upsert schemaName.TEST_CUSTOMER (id,name,zip,address,TELEPHONE) values (1002,'Hugh update','10086','北京市朝阳区街','65890001') where id=1002");
ResultSet rs = pstmt6.executeQuery();
this.processResult(rs);
this.closeConnection(con, pstmt6);
}
private void processResult(ResultSet rs) throws Exception {
if (rs.next()) {
ResultSetMetaData rsmd = rs.getMetaData();
int colNum = rsmd.getColumnCount();
System.out.println("colNum列数量:"+colNum);
//获取表的所有字段和字段类型
for (int i = 1; i <= colNum; i++) {
// System.out.println("getTableName:"+rsmd.getTableName(i));//获取表名 TEST_CUSTOMER
System.out.println("getSchemaName:"+rsmd.getSchemaName(i));
System.out.println("getColumnName:"+rsmd.getColumnName(i));
// System.out.println("getColumnType:"+ rsmd.getColumnType(i));
System.out.println("getColumnTypeName:"+rsmd.getColumnTypeName(i));
System.out.println("———————–");
}
do {
for (int i = 1; i <= colNum; i++) {
if (i == 1) {
System.out.print("rs.getString:"+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 {
this.closeStatement(stmt);
if (con != null) {
con.close();
}
}
private void closeStatement(Statement statement) throws SQLException {
if (statement != null) statement.close();
}
}
post SAP-Garson
原文链接:https://blog.csdn.net/qq_35400008/article/details/103685806文章来自于网络,如果侵犯了您的权益,请联系站长删除!