使用ABAP(ADBC)和Java(JDBC)连接SAP HANA数据库-阿里云开发者社区

开发者社区> -技术小能手-> 正文

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

简介: 在表DBCON里维护一条记录,指向HANA数据库。con_ENV里填入HANA数据库的主机名和端口号。如vmXXXX:30015
+关注继续查看

image.png

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.  

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

image.png


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
centos8如何安装java8
centos8如何安装java8
5 0
冬季实战营第一期
冬季实战营第一期
6 0
xshell+阿里云linux+vue+mysql开发练习
这篇文章记录了我在阿里云进行Linux基础学习的过程,以及根据阿里云进行一些简单的开发实践。
7 0
学习报告
本次学习让我收获了很多,了解了ECS服务器。怎么创建ECS服务器,怎么通过公网ip去连接它。还有就是让我快速搭建了一遍LAMP的环境。我一步步安装apache、mysql以及php服务,收获很大。19日的时候我部署了MYSQL数据库服务在ECS服务器上,并通过阿里云的dms控制台去访问我的数据库。对我的帮助很大。1月20日通过直播学习了从0搭建springboot学到了很多。能在我学习的时候快速搭建出来环境。1月21日我动手做了实验,其中安装数据库出现了一些问题关于安装包key的问题。我通取消了gpg检查。成功安装了数据库。最后完成了PolarDB实验。
8 0
Vim 基本操作 | 学习笔记
快速学习 Vim 基本操作。
5 0
阿里云冬季实战营(第一期学习记录)
阿里云冬季实战营(第一期学习记录)训练营日期:2022年1月17日 - 2022年1月23日
11 0
基于阿里云的第一次体验
基于阿里云体验云上操作的乐趣
7 0
1727
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载