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

i042416發表於2018-04-20

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

使用ABAP(ADBC)和Java(JDBC)連線SAP HANA資料庫
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://: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資料庫讀取出來。

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

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

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

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2153129/,如需轉載,請註明出處,否則將追究法律責任。

相關文章