资讯专栏INFORMATION COLUMN

使用ABAP(ADBC)和Java(JDBC)连接SAP HANA数据库

xiongzenghui / 2566人阅读

摘要:在表里维护一条记录,指向数据库。里填入数据库的主机名和端口号。如然后使用代码创建一个新的,插入三条进行,再读出来,最后删除实现类似数据库主机名此处填入登录密码打印结果数据能够成功通过从数据库读取出来。

在表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://: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数据库读取出来。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/94235.html

相关文章

  • 使用ABAP(ADBC)Java(JDBC)连接SAP HANA据库

    摘要:在表里维护一条记录,指向数据库。里填入数据库的主机名和端口号。如然后使用代码创建一个新的,插入三条进行,再读出来,最后删除实现类似数据库主机名此处填入登录密码打印结果数据能够成功通过从数据库读取出来。 在表DBCON里维护一条记录,指向HANA数据库。con_ENV里填入HANA数据库的主机名和端口号。如vmXXXX:30015 showImg(https://segmentfault...

    赵春朋 评论0 收藏0
  • 使用ABAP(ADBC)Java(JDBC)连接SAP HANA据库

    摘要:在表里维护一条记录,指向数据库。里填入数据库的主机名和端口号。如然后使用代码创建一个新的,插入三条进行,再读出来,最后删除实现类似数据库主机名此处填入登录密码打印结果数据能够成功通过从数据库读取出来。 在表DBCON里维护一条记录,指向HANA数据库。con_ENV里填入HANA数据库的主机名和端口号。如vmXXXX:30015 showImg(https://segmentfault...

    tylin 评论0 收藏0
  • 那些年我用过的SAP IDE

    摘要:本文里提到的所有都是基于版本的,这使得我又一次被鄙视了使用的程序猿鄙视使用的程序猿。因此这些事物码本身也是可以通过进行增强的。 在Google上根据关键字程序员鄙视链搜索,会得到68多万条结果。 showImg(https://segmentfault.com/img/remote/1460000014000687); 玲琅满目的搜索结果里是众多不同维度划分的鄙视链。 其中有一个维度,...

    denson 评论0 收藏0
  • 那些年我用过的SAP IDE

    摘要:本文里提到的所有都是基于版本的,这使得我又一次被鄙视了使用的程序猿鄙视使用的程序猿。因此这些事物码本身也是可以通过进行增强的。 在Google上根据关键字程序员鄙视链搜索,会得到68多万条结果。 showImg(https://segmentfault.com/img/remote/1460000014000687); 玲琅满目的搜索结果里是众多不同维度划分的鄙视链。 其中有一个维度,...

    wawor4827 评论0 收藏0
  • 那些年我用过的SAP IDE

    摘要:本文里提到的所有都是基于版本的,这使得我又一次被鄙视了使用的程序猿鄙视使用的程序猿。因此这些事物码本身也是可以通过进行增强的。 在Google上根据关键字程序员鄙视链搜索,会得到68多万条结果。 showImg(https://segmentfault.com/img/remote/1460000014000687); 玲琅满目的搜索结果里是众多不同维度划分的鄙视链。 其中有一个维度,...

    lewif 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<