天天看點

使用ABAP(ADBC)和Java(JDBC)連接配接SAP HANA資料庫

在表DBCON裡維護一條記錄,指向HANA資料庫。con_ENV裡填入HANA資料庫的主機名和端口号。如vmXXXX:30015

DATA: ls_new TYPE DBCON.     ls_new-con_name = 'HAN'.     ls_new-dbms = 'HDB'.     ls_new-user_name = 'system'.     ls_new-password = 'Sap12345'.     ls_new-con_env = 'vml2018:30015'.     CALL FUNCTION 'DBCON_INSERT'       EXPORTING         DBCON_WORKAREA                = ls_new       EXCEPTIONS         DBCON_KEY_EXISTS              = 1         SECURE_STORE_KEY_EXISTS       = 2         SECURE_STORE_OTHER            = 3         OTHERS                        = 4               .     IF SY-SUBRC = 0.        WRITE:/ 'Insert Successfully'.     ENDIF.     然後使用ABAP代碼建立一個新的table,插入三條entry進行,再讀出來,最後删除table.     TYPES:          BEGIN OF result_t,             key TYPE i,             value TYPE string,          END OF result_t.     DATA: connection TYPE dbcon-con_name VALUE 'HAN',           stmt_ref TYPE REF TO cl_sql_statement,           cx_sql_exception TYPE REF TO cx_sql_exception,           lv_text TYPE string,           res_ref TYPE REF TO cl_sql_result_set,           d_ref TYPE REF TO DATA,           result_tab TYPE TABLE OF result_t,           result_line TYPE result_t,           row_cnt TYPE i,           con_ref TYPE REF TO cl_sql_connection.     con_ref = cl_sql_connection=>get_connection( connection ).     stmt_ref = con_ref->create_statement( ).     TRY.        stmt_ref->execute_ddl( 'CREATE TABLE I042416_TESTPROC_TAB( key INT PRIMARY KEY, value NVARCHAR(255) )' ).        stmt_ref->execute_update( 'INSERT INTO I042416_TESTPROC_TAB VALUES(1, ''First value'' )' ).        stmt_ref->execute_update( 'INSERT INTO I042416_TESTPROC_TAB VALUES(2, ''Second value'' )' ).        stmt_ref->execute_update( 'INSERT INTO I042416_TESTPROC_TAB VALUES(3, ''Third value'' )' ).        res_ref = stmt_ref->execute_query( 'SELECT * FROM I042416_TESTPROC_TAB' ).        GET REFERENCE OF result_tab INTO d_ref.        res_ref->set_param_table( d_ref ).        row_cnt = res_ref->next_package( ).        stmt_ref->execute_ddl( 'DROP TABLE I042416_TESTPROC_TAB' ).     CATCH cx_sql_exception INTO cx_sql_exception.        lv_text = cx_sql_exception->get_text( ).        WRITE:/ 'Error:' , lv_text.     ENDTRY.     LOOP AT result_tab INTO result_line.        WRITE:/ 'Key:' , result_line-key, ' Value:', result_line-value.     ENDLOOP.           

Java實作類似:

public static void main(String[] args) {                  try                  {                         Class.forName("com.sap.db.jdbc.Driver");                         System.out.println("Create a connection...");                   con = (com.sap.db.jdbc.trace.Connection) DriverManager                            .getConnection("jdbc:sap://<HANA資料庫主機名>:30015",// ,                                     "system", "此處填入登入密碼");                         cs = (com.sap.db.jdbc.trace.CallableStatement) con.prepareCall("call I042416_two_par(NULL, NULL)");                         cs.execute();                         int index = 0;                         do                         {                                int rowCount = 0;                                com.sap.db.jdbc.trace.ResultSet rs = (com.sap.db.jdbc.trace.ResultSet)cs.getResultSet();                                ResultSetMetaData metaData = rs.getMetaData();                                int columnCount = metaData.getColumnCount();                                while (rs != null && rs.next())                                {                                      for (int i = 1; i <= columnCount; i++)                                      {                                             System.out.print(rs.getString(i) + " ");                                             if (i == columnCount)                                             {                                                    System.out.println();                                             }                                      }                                      System.out.println("Current Result Set Index:" + index + " Row Count: " + rowCount++);                                }                                System.out.println("Result Set Index: " + index++);                                                   } while(cs.getMoreResults());                  }           

console列印結果:資料能夠成功通過JDBC從HANA資料庫讀取出來。

要擷取更多Jerry的原創技術文章,請關注公衆号"汪子熙"或者掃描下面二維碼:

使用ABAP(ADBC)和Java(JDBC)連接配接SAP HANA資料庫